Python 3 zip 列表解压

Python 3 zip list unpacking

我有两个元组列表 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 中却没有。

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

这个有效:

# 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)