Python for循环生成列表?

时间:2017-06-16 20:17:02

标签: python list

a = [0,1]+[2 for _ in range (10**7+1)]

我想知道Python 3中的这段代码是做什么的?我尝试打印列表但是花了太长时间......我真的在问第二部分。我对那里的下划线感到困惑。

1 个答案:

答案 0 :(得分:0)

首先,表达式称为 list comprehension 。它用于在迭代另一个列表/可迭代时创建新列表。一个好的方案是

[value for item in range(integer)]

生成新数组[],该数组的值将取决于每次迭代上面表达式中的value。这意味着你做了什么行

[x for x in range(3)] # returns [0,1,2]
[x*4 for x in range(2)] # returns [0,4,8]

在这种情况下,值可以是表达式或常量 在您的情况下[2 for x in range(3)] # returns [2,2,2]因为每次迭代,值仍为2

我几乎忘了[a,b] + [c,d,e] = [a,b,c,d,e]

所以简单[0,1] + [2 for x in range(3)] # returns [0,1,2,2,2]

最后,你的范围太大,以至于为什么评论中提到的时间太长了!