使用列表理解展平元组列表的列表

alw*_*ous 5 list-comprehension python-3.x

为什么下面的列表理解会出错?我缺少什么?

a = [
[(1, 2), (11, 22), (111, 222)],
[(3, 4), (33, 44), (333, 444)],
[(5, 6), (55, 66), (555, 666)]
]

b = [k for k in j for j in i for i in a]
print(sorted(b))
Run Code Online (Sandbox Code Playgroud)

我知道有更优雅/可读的解决方案,但这是为了我自己的理解。

错误: 类型错误:“int”对象不可迭代

所需输出: [1, 2, 3, 4, 5, 6, 11, 22, 33, 44, 55, 66, 111, 222, 333, 444, 555, 666]

Moh*_*OUI 3

列表理解中的顺序是错误的。这是正确的解决方案:

In [5]: a = [
   ...: [(1, 2), (11, 22), (111, 222)],
   ...: [(3, 4), (33, 44), (333, 444)],
   ...: [(5, 6), (55, 66), (555, 666)]
   ...: ]
   ...: 
   ...: b = [j for x in a for y in x for j in y]
   ...: 
   ...: 
   ...: 

In [6]: 

In [6]: b
Out[6]: [1, 2, 11, 22, 111, 222, 3, 4, 33, 44, 333, 444, 5, 6, 55, 66, 555, 666]

In [7]: sorted(b) 
Out[7]: [1, 2, 3, 4, 5, 6, 11, 22, 33, 44, 55, 66, 111, 222, 333, 444, 555, 666]
Run Code Online (Sandbox Code Playgroud)

这是一个解释嵌套列表理解的 SO 讨论:解释嵌套列表理解如何工作?