Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich eine Liste sortieren und gleichzeitig die ursprüngliche Reihenfolge einer parallelen Liste in Python beibehalten?
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!