次のようなネストされたリストを再グループ化するショートカットはありますか
[[a0,b0,c0],[a1,b1,c1],[a2,b2,b2]]
このようなものを与える
[[a0,a1,a2],[b0,b1,b2],[c0,c1,c2]]
はい、使用zip()
:
transposed = zip(*matrix)
*matrix
;と入力した場合と同様に、ネストされたすべてのリストmatrix
を個別の引数として関数に適用します。入力シーケンスを受け取り、列ごとに新しいシーケンスを出力します。zip()
zip(matrix[0], matrix[1], matrix[2])
zip()
デモ:
>>> matrix = [['a0', 'b0', 'c0'], ['a1', 'b1', 'c1'], ['a2', 'b2', 'b2']]
>>> zip(*matrix)
[('a0', 'a1', 'a2'), ('b0', 'b1', 'b2'), ('c0', 'c1', 'b2')]
出力はネストされたタプルを使用します。ネストされたリストが必要な場合は、事後に次のように変換します。
map(list, zip(*matrix))
また
[list(t) for t in zip(*matrix)]