転置/解凍関数(zipの逆)?質問する

転置/解凍関数(zipの逆)?質問する

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)]

おすすめ記事