7

我有一个元组列表如下:[(12,1),(123,4),(33,4)]我希望它变成[12,123,33][1,4,4]我只是想知道我会怎么做?

提前喝彩

4

3 回答 3

21

您可以使用zip()

zipped = [(12, 1), (123, 4), (33, 4)]
>>> b, c = zip(*zipped)
>>> b 
(12, 123, 33)
>>> c
(1, 4, 4)

或者您可以使用列表推导实现类似的目标:

>>> 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 的方式,也更快。

于 2013-01-26T14:17:44.553 回答
9

这是一个完美的用例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]

如果您不介意成为元组ab不是列表,则可以删除map(list, ...)并保留a, b = zip(*l).

于 2013-01-26T14:18:11.737 回答
1

这将是我的尝试。

first_list = []
second_list = []

for tup in list_of_tuples:
    first_list.append(ls[0])
    second_list.append(ls[1])
于 2013-01-26T14:17:33.290 回答