Python 3 zip 列表解压
Python 3 zip list unpacking
我有两个元组列表 mkp1
和 mkp2
,我 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)
我有两个元组列表 mkp1
和 mkp2
,我 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 中却没有。
啊,我找到了
这个有效:
# 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)