Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich eine Liste von Listen in Python effizient transponieren?

Wie kann ich eine Liste von Listen in Python effizient transponieren?

Barbara Streisand
Freigeben: 2024-12-27 11:05:09
Original
212 Leute haben es durchsucht

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

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]]
Nach dem Login kopieren

Wir wollen es umsetzen, was zu Folgendem führt:

r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Nach dem Login kopieren

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)))
Nach dem Login kopieren

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)))
Nach dem Login kopieren

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))
Nach dem Login kopieren

Die Magie enthüllen

Um den Prozess zu verstehen, betrachten Sie den ersten Ansatz in Python 3:

  • Wir entpacken die Liste der Listen mit *l, wobei jede innere Liste als separates Argument an zip übergeben wird.
  • zip erstellt ein Zip-Objekt, das die Elemente von kombiniert die inneren Listen, was Tupel ergibt: (1, 4, 7), (2, 5, 8), (3, 6, 9).
  • Die Kartenfunktion wendet die Listenfunktion auf jedes Tupel an und konvertiert es zurück zu einer Liste.
  • Das Ergebnis ist eine Liste von Listen, wie gewünscht.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage