2013-10-10 151 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语句中出现的顺序。