解压缩Python 3压缩列表

时间:2015-12-12 20:48:59

标签: python python-3.x list zip python-3.4

我有两个元组mkp1mkp2列表,我zip并希望稍后将它们解压缩到列表中。但是在第一部分解压后,剩下的就不见了......为什么?

最小例子:

# list of tuples
mkp1 = [(1, 2), (3, 4), (5, 6)]
mkp2 = [(10, 20), (30, 40), (50, 60)]

# zip this list
pairs = zip(mkp1, mkp2)

# unzip this list
p1 = [kpp[0] for kpp in pairs]
p2 = [kpp[1] for kpp in pairs]
print('p1:', p1)
print('p2:', p2)

编辑:奇怪的是,这就像我在Python 2.7中预期的那样,但在Python 3.4中没有。

1 个答案:

答案 0 :(得分:2)

啊,我找到了answer:在Python 2中,zip返回一个元组列表,而在Python 3中它返回一个迭代器。这导致第二次迭代导致空列表。

这有效:

# list of tuples
mkp1 = [(1, 2), (3, 4), (5, 6)]
mkp2 = [(10, 20), (30, 40), (50, 60)]

# zip this list
pairs = zip(mkp1, mkp2)

# unzip this list
p1, p2 = [], []
for kpp in pairs:
    p1.append(kpp[0])
    p2.append(kpp[1])

print('p1:', p1)
print('p2:', p2)