我有一个元组列表如下:[(12,1),(123,4),(33,4)]
我希望它变成[12,123,33]
和[1,4,4]
我只是想知道我会怎么做?
提前干杯
答案 0 :(得分:17)
您可以使用zip():
zipped = [(12, 1), (123, 4), (33, 4)]
>>> b, c = zip(*zipped)
>>> b
(12, 123, 33)
>>> c
(1, 4, 4)
或者您可以使用list comprehensions实现类似的功能:
>>> b, c = [e[0] for e in zipped], [e[1] for e in zipped]
>>> b
[12, 123, 33]
>>> c
[1, 4, 4]
区别在于,一个给你一个元组列表(zip
),另一个给你一个列表元组(两个列表推导)。
在这种情况下,zip
可能是更加pythonic的方式,也更快。
答案 1 :(得分:8)
这是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]
如果您不介意a
和b
是元组而不是列表,则可以删除map(list, ...)
并保留a, b = zip(*l)
。
答案 2 :(得分:1)
这将是我的目标。
first_list = []
second_list = []
for tup in list_of_tuples:
first_list.append(ls[0])
second_list.append(ls[1])