Transponieren einer Liste von Listen: Ein pythonischer Ansatz
Gegeben eine Liste von Listen, wie zum Beispiel:
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Wir wollen es umsetzen, was zu Folgendem führt:
r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Zipping und Auspacken zur Rettung
Python bietet ein leistungsstarkes Tool namens zip, mit dem wir mehrere Iterables kombinieren und so ein Zip-Objekt erstellen können, das die Elemente parallel durchläuft. Die wichtigste Erkenntnis besteht darin, die Liste der Listen mit zip zu entpacken und dann die resultierenden Tupel in Listen umzuwandeln.
Python 3 und Jagged Tables
Für Python 3 haben wir zwei Optionen:
list(map(list, zip(*l)))
Dieser Ansatz kann bei gezackten Tabellen (bei denen Listen unterschiedliche Werte haben) zu Kurzschlüssen führen Längen).
list(map(list, itertools.zip_longest(*l, fillvalue=None)))
Dies behandelt gezackte Tabellen, indem kürzere Listen mit None gefüllt werden.
Python 2 und homogene Tabellen
In Python 2 Der einfachere Ansatz funktioniert gut für homogene Tabellen:
map(list, zip(*l))
Die Magie enthüllen
Um den Prozess zu verstehen, betrachten Sie den ersten Ansatz in Python 3:
Umgang mit Jagged Tabellen
itertools.zip_longest verarbeitet gezackte Tabellen, indem es kürzere Listen mit dem angegebenen Füllwert füllt (Standard: Keine). Es stellt sicher, dass alle Listen im transponierten Ergebnis die gleiche Länge haben.
Fazit
Das Transponieren einer Liste von Listen ist eine häufige Aufgabe bei der Datenmanipulation. Indem wir die Leistungsfähigkeit von zip nutzen und sein Verhalten verstehen, können wir effiziente Lösungen in Python implementieren.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste von Listen in Python effizient transponieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!