1. ホーム
  2. python

[解決済み] Transpose/Unzip Function (zipの逆数)?

2022-03-18 16:21:15

質問

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

そのようなビルトイン関数はあるのでしょうか?

どのように解決するのですか?

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 は直接(タプルに変換された後)なので、引数の数が大きくなりすぎることを心配する必要はない。