Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich eine Liste sortieren und gleichzeitig die ursprüngliche Reihenfolge einer parallelen Liste in Python beibehalten?

Wie kann ich eine Liste sortieren und gleichzeitig die ursprüngliche Reihenfolge einer parallelen Liste in Python beibehalten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-10 06:54:14722Durchsuche

How Can I Sort One List While Maintaining the Original Order of a Parallel List in Python?

Originalpositionen beim Sortieren einer parallelen Liste beibehalten

In dem Szenario, in dem Sie parallele Listen haben und eine Liste sortieren möchten, während Sie die andere neu anordnen Auf synchronisierte Weise liegt eine robuste Lösung vor. Die Verwendung des Ansatzes „Dekorieren, Sortieren, Undecorate“ vereinfacht den Prozess, insbesondere mit der integrierten Zip-Funktion von Python.

Die Pythonic-Lösung umfasst das Erstellen eines dekorierten Zip-Objekts, dessen anschließende Sortierung und schließlich das Extrahieren der Originallisten aus der sortierten Zip. Diese Technik behält die ursprünglichen Positionen der Elemente in beiden Listen bei.

Zum Beispiel die Listen:

list1 = [3, 2, 4, 1, 1]
list2 = ['three', 'two', 'four', 'one', 'one2']

Ausführen des folgenden Codes:

list1, list2 = zip(*sorted(zip(list1, list2)))

Wird erzeugt :

list1 = [1, 1, 2, 3, 4]
list2 = ['one', 'one2', 'two', 'three', 'four']

Wenn die Listen jedoch leer sind, funktioniert diese spezielle Methode nicht richtig. Eine leichte Änderung kann dieses Problem beheben:

list1, list2 = (list(t) for t in zip(*sorted(zip(list1, list2))))

Python bietet einen alternativen Ansatz für die In-Place-Sortierung, der zwar ausführlicher ist, für kleinere Listen jedoch möglicherweise eine leichte Leistungssteigerung bietet:

tups = zip(list1, list2)
tups.sort()
list1, list2 = zip(*tups)

Zusammenfassend lässt sich sagen, dass es zwar mehrere Ansätze zur Lösung dieses Problems gibt, die Zip-Methode jedoch eine präzise und effiziente Lösung bietet, die die ursprünglichen Positionen der Elemente während des gesamten Sortierprozesses beibehält.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste sortieren und gleichzeitig die ursprüngliche Reihenfolge einer parallelen Liste in Python beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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