ペアのリスト/タプルを2つのリスト/タプルに展開する [重複] 質問する

ペアのリスト/タプルを2つのリスト/タプルに展開する [重複] 質問する

次のようなリストがあります:

my_list = [('1','a'),('2','b'),('3','c'),('4','d')]

リストを2つのリストに分割したいです。

list1 = ['1','2','3','4']
list2 = ['a','b','c','d']

たとえば次のように実行できます:

list1 = []
list2 = []
for i in list:
   list1.append(i[0])
   list2.append(i[1])

しかし、もっとエレガントな解決策があるかどうか知りたいのです。

ベストアンサー1

>>> source_list = [('1','a'),('2','b'),('3','c'),('4','d')]
>>> list1, list2 = zip(*source_list)
>>> list1
('1', '2', '3', '4')
>>> list2
('a', 'b', 'c', 'd')

編集:これはzip(*iterable)それ自体の逆であることに注意してください:

>>> list(source_list) == zip(*zip(*source_list))
True

2 つのリストに展開すると、次のようになります。

>>> list1, list2 = zip(*source_list)
>>> list(source_list) == zip(list1, list2)
True

rocksportrocker によって提案された追加。

おすすめ記事