この記事の例では、Python での 2 次元配列の変換方法を説明します。皆さんの参考に共有してください。具体的な方法は以下の通りです。
まず次のコードを見てください:
arr = [ [1, 2, 3], [4, 5, 6], [7, 8,9], [10, 11, 12]] print map(list, zip(*arr)) print '_-------------------------------------------------' print [[r[col] for r in arr] for col in range(len(arr[0]))]
実行結果は次のとおりです:
[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]] _------------------------------------------------- [[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]
説明は次のとおりです:
1. 最初のメソッド :map(list, zip(*arr))
zip([反復可能, ...])
この関数はタプルのリストを返します。ここで、i 番目のタプルには、各引数シーケンスまたはイテラブルの i 番目の要素が含まれます。
zip()
別の例を挙げてみましょう:
>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> zipped = zip(x, y) >>> zipped [(1, 4), (2, 5), (3, 6)]
マップ(関数、リスト):
リスト内の各要素で func メソッドを呼び出し、リストを返します
パラメータ *arr は、任意の位置ベースのパラメータを渡すための Python の構文です
2. 2 番目の方法: [[r[col] for r in arr] forcol in range(len(arr[0]))]
内部導出は選択された要素 (行から) を変更しますが、外部導出はセレクター (つまり、列) に影響します