【发布时间】:2014-03-19 19:49:56
【问题描述】:
所以,我从这段代码开始:
x = [1, [2, 3]]
y = [4, [5, 6]]
z = [7, [8, 9]]
amazing_list = [x, y, z]
我对它做了一个简单的列表理解
print [l for l in amazing_list]
按预期打印[[1, [2, 3]], [4, [5, 6]], [7, [8, 9]]]
print [l for i, l in amazing_list]
按预期打印[[2, 3], [5, 6], [8, 9]]
print [a for i, l in amazing_list for a in l]
按预期打印[2, 3, 5, 6, 8, 9],
但是这里是踢球者,这里是出乎意料的地方:我试图用我即将呈现的下一行代码来完成我只是想打印 2, 5, 8 (列表内列表的第一个元素):
print [a for i, l in amazing_list for a, b in l]
但这会打印出TypeError: 'int' object is not iterable。为什么?
我知道这些可以完成我想要完成的事情:
print [l[0] for i, l in amazing_list]
print [a for a, b in [l for i, l in amazing_list]]
但我想找到的是,从概念上讲,为什么我的第一次理解尝试没有奏效。
【问题讨论】:
-
解压
l:[a for i, (a, b) in amazing_list]
标签: python list list-comprehension