Maison > développement back-end > Tutoriel Python > Comment puis-je transposer efficacement une liste de listes en Python ?

Comment puis-je transposer efficacement une liste de listes en Python ?

Barbara Streisand
Libérer: 2024-12-27 11:05:09
original
212 Les gens l'ont consulté

How Can I Efficiently Transpose a List of Lists in Python?

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]]
Copier après la connexion

nous visons à le transposer, ce qui se traduit par :

r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Copier après la connexion

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)))
Copier après la connexion

Cette approche peut court-circuiter les tableaux irréguliers (où les listes ont des longueurs).

list(map(list, itertools.zip_longest(*l, fillvalue=None)))
Copier après la connexion

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))
Copier après la connexion

Dévoilement du Magie

Pour comprendre le processus, considérons la première approche dans Python 3 :

  • Nous décompressons la liste des listes en utilisant *l, en passant chaque liste interne comme un argument distinct à compresser.
  • zip crée un objet zip qui combine les éléments des listes internes, produisant des tuples : (1, 4, 7), (2, 5, 8), (3, 6, 9).
  • La fonction map applique la fonction de liste à chaque tuple, le reconvertissant en liste.
  • Le résultat est une liste de listes, comme souhaité.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal