展平列表理解,一次两个列表理解

flattening list comprehension, two list comprehensions at once

为什么这会使列表变平 L

[item for sublist in L for item in sublist]

这对我来说没有任何直观意义,我不知道如何才能读懂它。我打算如何解析这个嵌套列表理解?

我完全希望它能起作用:

[item for item in sublist for sublist in L]

但这违反直觉(子列表未定义)。

[item for sublist in L for item in sublist] 是如何解析的?

嵌套理解与编写嵌套 for 循环的顺序相同:

result = []
for sublist in L:
    for item in sublist:
        result.append(item)

我通常格式化我的理解以帮助提醒未来的我:

result = [item
          for sublist in L
          for item in sublist]