【发布时间】:2020-08-13 03:33:37
【问题描述】:
假设我想随机数,但该数字不能是i,或者已经在列表中的数字。如何检查if 语句中的列表?
我想我已经接近答案了:
if randlink == i or (randlink == x for x in listofnumbers):
return randNumber(i, listofnumbers)
这个函数返回一个之前没有出现过的数字,代码如下:
def randNumber(i, listofnumbers):
from random import randrange
randlink = randrange(0, size)
if randlink == i or [randlink == x for x in listofnumbers]:
return randNumber(i, listofnumbers)
return randlink
【问题讨论】:
-
改用
random.sample,比如random.sample(range(size), n) -
不要将递归用于此类目的。只需构造一个
while循环。 -
@FranciscoCouzo 是的,但我们不知道
listofnumbers是否会自动填充新的随机数。 -
不错!但是我怎样才能避免从 0 到大小的generet 编号,除了编号 i 吗?例如:i = 2 random.sample(range(0, 6), 3)
-
random.sample(list(range(0, 3)) + list(range(4, size+1)))