Vous pouvez utiliser zip.
>>> matrix = [
... [1, 2, 3],
... [4, 5, 6],
... [7, 8, 9]
... ]
>>> list(map(list, zip(*matrix)))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Si vous ajoutez *
lors du passage d'un objet itérable à une fonction, il sera développé et passé.
Ainsi, zip (* matrice)
et zip ([1, 2, 3], [4, 5, 6], [7, 8, 9])
sont équivalents.
Et si c'est list (zip (* matrix))
, le contenu sera un taple, alors convertissez-le en liste en utilisant map.
>>> list(zip(*matrix))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> list(map(list, zip(*matrix)))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
De cette façon, vous obtiendrez une erreur lorsqu'il n'y a qu'une seule ligne.
>>> matrix = [1, 2, 3]
>>> list(map(list, zip(*matrix)))
TypeError: zip argument #1 must support iteration
Je ne sais pas combien d'occasions une ligne a pour traiter une matrice à une ligne en premier lieu.
(Une addition) Dans le cas d'une ligne, vous pouvez le faire sans ajouter «*».
>>> matrix = [1, 2, 3]
>>> list(map(list, zip(matrix)))
[[1], [2], [3]]
Recommended Posts