我有一个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])
有内置的功能吗?
zip是它自己的逆!前提是你使用特殊的*运算符。
zip
>>> 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))
…除了参数zip直接传递(转换为元组后)外,因此不必担心参数数量太大。