【问题标题】:Append non-duplicated random numbers to a list将不重复的随机数附加到列表中
【发布时间】:2014-06-05 17:03:25
【问题描述】:

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

【问题讨论】:

    标签: python random append


    【解决方案1】:

    与其从整个范围中选择号码然后检查您选择的号码是否已经在列表中,不如先过滤掉所有已经存在的号码然后根据是什么来选择更有效左。例如:

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

    【讨论】:

      猜你喜欢
      • 2017-09-20
      • 1970-01-01
      • 2020-02-23
      • 2020-04-21
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多