Verständnis der Transpose/Unzip-Funktion in Python
Wenn Sie mit Daten in Python arbeiten, stellen Sie häufig fest, dass Sie Listen und Tupel manipulieren müssen. Eine gängige Operation besteht darin, eine Liste von 2-Elemente-Tupeln in zwei separate Listen zu transformieren. Dies kann für die Datenanalyse entscheidend sein, wo Sie möglicherweise Schlüssel von Werten trennen oder Daten einfach kategorisieren möchten, um eine einfachere Manipulation zu ermöglichen.
Das Problem
Stellen Sie sich vor, Sie haben eine Liste von Tupeln wie folgt:
original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
Ihr Ziel ist es, diese Liste in zwei individuelle Listen zu konvertieren:
- Eine Liste sollte die ersten Elemente enthalten:
['a', 'b', 'c', 'd']
- Die zweite Liste sollte die zweiten Elemente enthalten:
[1, 2, 3, 4]
Diese Operation kann als “Entpacken” der Tupel oder als Anwendung einer Transponierungsfunktion beschrieben werden, bei der die Achsen der Daten getauscht werden.
Die Lösung
Glücklicherweise bietet Python eine integrierte Funktion namens zip
, die dabei helfen kann. Lassen Sie uns durchgehen, wie Sie es sowohl in Python 2.x als auch in Python 3.x verwenden können.
Verwendung von zip
in Python 2.x
In Python 2.x funktioniert zip
als sein eigenes Inverses, wenn Sie einen speziellen Operator namens Entpackungsoperator *
anwenden. So können Sie es auf Ihre ursprüngliche Tupelliste anwenden:
result = zip(*original)
# Ergebnis wird sein: (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
- Der
*
-Operator entpackt effektiv das Tupel in separate Argumente für diezip
-Funktion. - Dies gibt Ihnen die transponierte Version direkt.
Verwendung von zip
in Python 3.x
Python 3.x ändert das Verhalten von zip
leicht, indem es einen faulen Iterator anstelle einer Liste zurückgibt. Es ist jedoch immer noch einfach, dies in eine Liste zu konvertieren, um dasselbe Ergebnis wie in Python 2.x zu erzielen. Hier ist der Code:
result = list(zip(*original))
# Ergebnis wird sein: (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
- Indem Sie
zip(*original)
mitlist()
umschließen, konvertieren Sie den faulen Iterator in ein Listenformat zur einfachen Verwendung.
Fazit
Jetzt haben Sie ein gutes Verständnis dafür, wie Sie eine Liste von 2-Elemente-Tupeln in Python transponieren oder “entpacken” können! Ob Sie in Python 2.x oder 3.x arbeiten, die zip
-Funktion bietet in Kombination mit dem Entpackungsoperator eine elegante Lösung, um Elemente für eine einfachere Datenmanipulation zu trennen.
Fühlen Sie sich frei, diesen Ansatz in Ihre Python-Projekte zu integrieren, um saubereren, effizienteren Code zu erhalten. Viel Spaß beim Programmieren!