タプルのリストを個別のリストに解凍するにはどうすればいいですか? [重複] 質問する

タプルのリストを個別のリストに解凍するにはどうすればいいですか? [重複] 質問する

タプルのリストがありますl = [(1,2), (3,4), (8,9)]。このリストを簡潔かつ Python で 2 つの独立したリストに解凍して を取得するにはどうすればよいでしょうか[ [1, 3, 8], [2, 4, 9] ]?

言い換えれば、逆数を取得するにはどうすればいいかzipそうでしょうか?

ベストアンサー1

使用zip(*list)

>>> l = [(1,2), (3,4), (8,9)]
>>> list(zip(*l))
[(1, 3, 8), (2, 4, 9)]

zip()関数全ての入力から要素をペアにして、最初の値から始めて、次に2番目の値などを作成します*lすべてのタプルを関数に個別の引数lとして適用するzip()なので、 は最初にとペアにzip()なり、次におよびとペアになります。これらは、 の列、つまりの転置とうまく対応します。138249l

zip()タプルを生成します。変更可能なリスト オブジェクトが必要な場合は、map()タプルをリストに変換するか、リストの内包表記を使用してリストのリストを生成します。

map(list, zip(*l))          # keep it a generator
[list(t) for t in zip(*l)]  # consume the zip generator into a list of lists

おすすめ記事