将非重复的随机数附加到列表中

时间:2014-06-05 17:03:26

标签: python random append

我想将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并且它应该附加一个或另一个,这给出了超出最大递归的运行时错误。

1 个答案:

答案 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])