Indizes sortierter Liste angeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
aleph
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2017, 15:28

Ich habe eine Liste mit Gleitkommazahlen. Jetzt würde ich gerne jedes Listenelement x durch das Tupel (Index von x, x) ersetzen und diese neue Liste nach dem zweiten Eintrag jedes Tupels sortieren.

Wie mache ich sowas?
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Tupel mit Index erhältst Du mit »enumerate« und sortieren nach dem zweiten Element geht mit dem key-Argument von »sorted«.
aleph
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2017, 15:28

Danke!

Code: Alles auswählen

liste = [0.5, 0.1, 0.3]
liste_mit_indizes = [(index, element) for index, element in enumerate(liste)]
sortierte_liste_mit_indizes = sorted(liste_mit_indizes, key=lambda item: item[1])
print(sortierte_liste_mit_indizes)
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@aleph: eigentlich kürzer:

Code: Alles auswählen

liste = [0.5, 0.1, 0.3]
sortierte_liste_mit_indizes = sorted(enumerate(liste), key=lambda item: item[1])
print(sortierte_liste_mit_indizes)
aleph
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2017, 15:28

OK, danke.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

In welchem Zusammenhang wird das benötigt? Möglicherweise ist numpy.argsort() hier geeigneter.
Antworten