私はちょうどmatrix transposing tutorial hereを読んでリスト内包表記を始めます。私は例を理解するが、私は範囲をハードコーディングせずに行列を転置する方法を把握しようとしている。その代わりrange(4)
のPythonリスト補完 - 転置
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
lcomp = [[row[i] for row in matrix] for i in range(4)]
print(lcomp)
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] #result
、私はの最大数を把握できるようにしたいです最大の入れ子配列が持つ要素。私はlambda
を配置しようとしましたが、それからエラーが発生し続けました。 1ライナーでこれを行うことは可能ですか?不一致の長さを持つサブリストについては
s = len(matrix[0])
lcomp = [[row[i] for row in matrix] for i in range(s)]
::サイドノートで
s = len(max(matrix, key=len))
、あなたが簡単にあなたの行列を転置ことができるすべてのサブリストは、同じ数の要素を持っていると仮定すると
2番目の理解の周りにかっこを使用します。リスト内包表記はタプル内包表記とすることもできますか? – qarthandso
いいえ、このようなカッコで囲まれた式はジェネレータ式と呼ばれ、リスト内包とは若干異なります。 [here](https://www.python.org/dev/peps/pep-0289/)についてはこちらをご覧ください。 – IanAuld