混乱的python列表理解

混乱的python列表理解,python,list,python-2.7,list-comprehension,Python,List,Python 2.7,List Comprehension,我试图弄明白这个列表理解是如何工作的,但我不太明白它是如何工作的。如果有人能写出非列表理解力,我想我能理解 这是我一直坚持的路线: [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,

我试图弄明白这个列表理解是如何工作的,但我不太明白它是如何工作的。如果有人能写出非列表理解力,我想我能理解

这是我一直坚持的路线:

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

非列表理解等效项:

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

等效的for循环版本如下所示:

result = []

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

因此,列表理解中
for
语句的顺序与它们在嵌套for语句中的出现顺序相同。

请注意,两者在语义上是等价的,但列表理解通常表现得更好。