2017-06-16 126 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]

最後你的範圍太大了,這就是爲什麼它在評論中提到太久了!