猿问

转置/解压函数(ZIP的逆)?

转置/解压函数(ZIP的逆)?

我有一个包含2项元组的列表,我想将它们转换为2个列表,其中第一个列表包含每个元组中的第一个项目,第二个列表包含第二个项目。

例如:

original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]# and I want to become...result = (['a', 'b', 'c', 'd'], [1, 2, 3, 4])

有内置函数吗?


千巷猫影
浏览 479回答 3
3回答

慕侠2389804

如果您有不同长度的列表,您可能不想使用zip作为Patricks的答案。这样做是可行的:>>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)])[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]但是,对于不同的长度列表,zip将每一项截断为最短列表的长度:>>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', )])[('a', 'b', 'c', 'd', 'e')]您可以使用没有函数的map来用None填充空结果:>>> map(None, *[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', )])[('a', 'b', 'c', 'd', 'e'), (1, 2, 3, 4, None)]但是zip()稍微快一些。
随时随地看视频慕课网APP

相关分类

Python
我要回答