pyr*_*rat 17
你可以使用zip():
zipped = [(12, 1), (123, 4), (33, 4)]
>>> b, c = zip(*zipped)
>>> b
(12, 123, 33)
>>> c
(1, 4, 4)
Run Code Online (Sandbox Code Playgroud)
或者你可以使用列表推导来实现类似的东西:
>>> b, c = [e[0] for e in zipped], [e[1] for e in zipped]
>>> b
[12, 123, 33]
>>> c
[1, 4, 4]
Run Code Online (Sandbox Code Playgroud)
区别在于,一个给你一个元组列表(zip
),另一个给你一个列表元组(两个列表推导).
在这种情况下zip
,可能是更加pythonic方式,也更快.
这是一个完美的用例zip()
:
In [41]: l = [(12,1), (123,4), (33,4)]
In [42]: a, b = map(list, zip(*l))
In [43]: a
Out[43]: [12, 123, 33]
In [44]: b
Out[44]: [1, 4, 4]
Run Code Online (Sandbox Code Playgroud)
如果你不介意a
并且b
不是列表而是列表,你可以删除map(list, ...)
并保持a, b = zip(*l)
.