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]

違いは、1 つはzipタプルのリスト ( ) を提供し、もう 1 つはリストのタプル (2 つのリスト内包表記) を提供します。

この場合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]

リストではなくタプルであることを気aにしない場合は、 を削除してそのままにしておくことができます。bmap(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 に答える