我想将2个随机数附加到列表中,但是必须首先检查该数字是否在列表中,如果它已经在列表中,它应该更改它并再次检查,直到数字不同于列表中的那些。
from random import randrange
def app_rand(lista):
x=randrange(1,10)
for i in lista:
if x==i:
x=randrange(1,10)
app_rand(lista)
else:
lista.append(x)
print lista
app_rand([1,2,3,4,5,6,7])
列表是从1到7,所以要追加的唯一可能数字应该是9和8并且它应该附加一个或另一个,这给出了超出最大递归的运行时错误。
答案 0 :(得分:3)
不是从整个范围中挑选数字,然后检查您选择的数字是否已经在列表中,首先过滤掉已经存在的所有数字然后根据什么是选择更有效率剩下。例如:
import random
def app_rand(lista):
options = set(range(1, 10)).difference(lista)
lista.extend(random.sample(options, 2))
print lista
app_rand([1,2,3,4,5,6,7])