2013-10-10 147 views
2

我想弄清楚這個列表理解是如何工作的,但我不太明白它是如何工作的。如果有人能寫出非列表理解的等價物,我想我可以理解。混淆python列表理解

這是我卡上線:

[item for sublist in li for item in sublist] 

它的既定目的是爲了削平了多維名單。下面是我的測試它的一個例子:

>>> li = [[0,1],[1,3,5],[4,5,3,2]] 
>>> [item for sublist in li for item in sublist] 
[0, 1, 1, 3, 5, 4, 5, 3, 2] 

回答

7

非列表解析相當於:

arr = [] 
for sublist in li: 
    for item in sublist: 
     arr.append(item) 
+1

請注意,兩者在語義上是等價的,但列表理解通常會更好。 – roippi

2

for循環版本等效會是什麼樣子:

result = [] 

for sublist in li: 
    for item in sublist: 
     result.append(item) 

所以,for順序列表理解中的語句等同於它們在嵌套for語句中出現的順序。