Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python mehrere Listen unter Beibehaltung der Ausrichtung sortieren?

Wie kann ich in Python mehrere Listen unter Beibehaltung der Ausrichtung sortieren?

Susan Sarandon
Susan SarandonOriginal
2024-12-28 17:10:17589Durchsuche

How Can I Sort Multiple Lists in Python While Maintaining Alignment?

Sortieren von Listen unter Beibehaltung der Ausrichtung

Beim Arbeiten mit mehreren parallelen Listen kann es erforderlich sein, eine Liste zu sortieren und gleichzeitig die entsprechende Reihenfolge der Elemente in den anderen Listen beizubehalten. Um dies zu erreichen, stellen wir zwei klassische Ansätze vor.

Das Idiom „Decorate, Sort, Undecorate“

Diese Technik vereinfacht die Aufgabe mithilfe der in Python integrierten Zip-Funktion, die Elemente aus mehreren Listen kombiniert in Tupel:

list1 = [3, 2, 4, 1, 1]
list2 = ['three', 'two', 'four', 'one', 'one2']
list1, list2 = zip(*sorted(zip(list1, list2)))

Nachdem die Tupel nach dem ersten Element (list1) sortiert wurden, wird die Reihenfolge auf beide angewendet Listen.

In-Place-Sortierung

Für eine höhere Geschwindigkeit können Sie einen In-Place-Sortierungsansatz verwenden:

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

Dieser Ansatz übertrifft in der Regel die einzeilige Version für kleine Listen, wird aber aufgrund der optimierten Zip-Routinen von Python für größere Listen vergleichbar.

Alternative Ansätze

  1. Indizes sortieren: Wenn der Vergleich von Elementen der zweiten Liste ineffizient ist oder nicht unterstützt wird, sortieren Sie stattdessen die Indizes und verwenden Sie sie, um die Listen neu zu ordnen.
  2. Schlüsselfunktion: Definieren Sie eine Schlüsselfunktion, die basierend auf der ersten Liste sortiert, ohne Elemente der zweiten zu vergleichen Liste:
list1 = [3, 2, 4, 1, 1]
list2 = [num * num for num in list1]
result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))

Das obige ist der detaillierte Inhalt vonWie kann ich in Python mehrere Listen unter Beibehaltung der Ausrichtung sortieren?. 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