首页 > 解决方案 > list.remove(x): x 不在随机数列表中

问题描述

我收到list.remove(x)错误所以我在这里做的是,我正在使用该程序生成随机数,而不会从设定的范围内重复,并在调用该数字时删除该数字,但不知何故我没有出现在列表消息中,即使random 已从列表中调用。

import random
def checkPizza(numOfPizza):
    pizzaD = []
    allowed_val = list(range(0,M+1))
    if numOfPizza == 2:
        allowed_val = allowed_val
        while True:
            allowed_val = allowed_val
            alpha = random.choice(allowed_val)
            beta = random.choice(allowed_val)
            if alpha != beta:
                allowed_val.remove(alpha)
                allowed_val.remove(beta)
                pizzaD.append(alpha)
                pizzaD.append(beta)
                break

标签: pythonrandom

解决方案


你的代码对我来说运行良好。你没有在这里定义 M 所以我选择了一个任意数字:

import random
def checkPizza(numOfPizza):
    pizzaD = []
    allowed_val = list(range(0,10))
    if numOfPizza == 2:
        allowed_val = allowed_val
        while True:
            allowed_val = allowed_val
            alpha = random.choice(allowed_val)
            beta = random.choice(allowed_val)

            if alpha != beta:
                allowed_val.remove(alpha)
                allowed_val.remove(beta)
                pizzaD.append(alpha)
                pizzaD.append(beta)
                print(pizzaD)
                break


checkPizza(2)

输出:

[7, 5]

然而,我不清楚allowed_val=allowed_val应该做什么。它在您的代码中出现两次。此外,我认为您正在使用 while 循环来处理 alpha 等于 beta 的情况。在我看来,以下是首选:

alpha,beta = random.sample(allowed_val,2)

这将从 allowed_val 列表中分配两个不相同的值。在这种情况下,您不需要while True循环


推荐阅读