3

次のようなネストされたリストを再グループ化するショートカットはありますか

[[a0,b0,c0],[a1,b1,c1],[a2,b2,b2]]

このようなものを与える

 [[a0,a1,a2],[b0,b1,b2],[c0,c1,c2]]
4

1 に答える 1

5

はい、使用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)]
于 2013-10-20T10:38:39.120 に答える