Transposer une liste de listes : une approche pythonique
Étant donné une liste de listes, telle que :
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
nous visons à le transposer, ce qui se traduit par :
r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Zipping et Déballage à la rescousse
Python fournit un outil puissant appelé zip qui nous permet de combiner plusieurs itérables, créant ainsi un objet zip qui parcourt les éléments en parallèle. L'idée clé est de décompresser la liste des listes à l'aide de zip, puis de convertir les tuples résultants en listes.
Python 3 et Jagged Tables
Pour Python 3, nous avons deux options :
list(map(list, zip(*l)))
Cette approche peut court-circuiter les tableaux irréguliers (où les listes ont des longueurs).
list(map(list, itertools.zip_longest(*l, fillvalue=None)))
Cela gère les tableaux irréguliers en remplissant des listes plus courtes avec Aucun.
Python 2 et tables homogènes
Dans Python 2, l'approche la plus simple fonctionne bien pour les tables homogènes :
map(list, zip(*l))
Dévoilement du Magie
Pour comprendre le processus, considérons la première approche dans Python 3 :
Gestion des tableaux irréguliers
itertools.zip_longest gère les tableaux irréguliers en remplissant des listes plus courtes avec la valeur de remplissage spécifiée (par défaut : Aucune). Cela garantit que toutes les listes du résultat transposé ont la même longueur.
Conclusion
La transposition d'une liste de listes est une tâche courante dans la manipulation de données. En exploitant la puissance de zip et en comprenant son comportement, nous pouvons mettre en œuvre des solutions efficaces en Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!