Python 推迟对清单项目的评估

Python 推迟对清单项目的评估,python,Python,我想生成一个范围内的随机整数列表: from random import randint lower = 0 upper = 20 length = 10 random_array = [randint(lower, upper) for _ in range(length)] 我认为这并不优雅,我提出了另一个解决方案: random_array = [randint(lower, upper)] * length 但它会生成一个相同整数的列表 可能是在list之前执行randint

我想生成一个范围内的随机整数列表:

from random import randint

lower  = 0
upper  = 20
length = 10

random_array = [randint(lower, upper) for _ in range(length)]
我认为这并不优雅,我提出了另一个解决方案:

random_array = [randint(lower, upper)] * length
但它会生成一个相同整数的列表

可能是在
list
之前执行
randint

我试着用
lambda
推迟
randint

random_array = [(lambda: randint(lower, upper))()] * length
但是失败了


因此,我想知道是否有可能延迟对项目的评估(
randint
,在本例中),然后在列表组装完成后触发它?

这是一个怎样的重复?OP不要求数字是唯一的。@Selcuk不,它们不是唯一的。链接的副本与询问者的特定问题不匹配。这可能更有用:因此您发现
[(lambda:randint(lower,upper))()]*长度
[randint(lower,upper)for uuu-in-range(length)]
更优雅。我认为实际的问题是“如何在不预先计算整个列表的情况下延迟数字的实际生成”?真正的答案是使用生成器函数。
from random import randint

lower = 0
upper = 20
length = 10

random_array = list()
for _ in range(length):
    random_array.append(randint(lower, upper))
print random_array
random_array = map(lambda _: randint(lower, upper), range(length))