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