重複の可能性:
Python の転置/解凍関数
タプルのリストがあり、このリストを 2 つの独立したリストに解凍したいと考えています。Python で標準化された操作を探しています。
>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ]
これを達成するための簡潔でpythonicな方法を探しています。
基本的に、私はzip()
関数の逆操作を探しています。
重複の可能性:
Python の転置/解凍関数
タプルのリストがあり、このリストを 2 つの独立したリストに解凍したいと考えています。Python で標準化された操作を探しています。
>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ]
これを達成するための簡潔でpythonicな方法を探しています。
基本的に、私はzip()
関数の逆操作を探しています。
使用zip(*list)
:
>>> l = [(1,2), (3,4), (8,9)]
>>> list(zip(*l))
[(1, 3, 8), (2, 4, 9)]
このzip()
関数は、最初の値、次に2番目の値など、すべての入力からの要素をペアにします。を使用すると、関数に個別の引数としてすべてのタプル*l
を適用するため、最初に、次に、とにペアになります。それらはたまたま列、またはの転置とうまく対応しています。l
zip()
zip()
1
3
8
2
4
9
l
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
リストのリストが必要な場合:
>>> [list(t) for t in zip(*l)]
[[1, 3, 8], [2, 4, 9]]
タプルのリストに問題がない場合:
>>> zip(*l)
[(1, 3, 8), (2, 4, 9)]