2017-06-16 130 views
-6
a = [0,1]+[2 for _ in range (10**7+1)] 

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

+0

'_'只是一个像其他任何变量名称。他们可以称它为'i'或'wilco'或'michaeljordan'。 – user2357112

+1

'[2 for _in range(10 ** 7 + 1)]'给你一个长度为10 ** 7 + 1的列表,其中元素全部为2 – Ding

+0

这会将10 ** 7 + 1 2s附加到' [0,1]' – depperm

回答

0

首先该表达式被称为列表理解。它用于在迭代另一个列表/可迭代时创建一个新列表。一个好的场景是

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

最后你的范围太大了,这就是为什么它在评论中提到太久了!