2 項目のタプルのリストがあり、それを 2 つのリストに変換し、最初のリストに各タプルの最初の項目が含まれ、2 番目のリストに 2 番目の項目が保持されるようにしたいと思います。
例えば:
original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
# and I want to become...
result = (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
それを実行する組み込み関数はありますか?
ベストアンサー1
2.xでは、zip
逆もまた同じです!特別な*演算子を使用する。
>>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)])
[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]
zip
これは、リストの各要素を個別の引数として呼び出すことと同じです。
zip(('a', 1), ('b', 2), ('c', 3), ('d', 4))
ただし、引数はzip
(タプルに変換された後)直接渡されるため、引数の数が大きくなりすぎることを心配する必要はありません。
3.xでは、zip
遅延イテレータを返すただし、これは簡単に変換できます。
>>> list(zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)]))
[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]