Seite 1 von 1
Erste Liste nach der zweiten sortieren
Verfasst: Donnerstag 13. September 2012, 11:32
von samid
Hallo zusammen,
ich folgendes Problem, und komm einfach nicht drauf wie ich es anstellen soll:
Input:
Code: Alles auswählen
lst_1 = [2, 3, 1]
lst_2 =[[2,0,0],[3,0,0],[1,0,0]]
Output nach dem sortieren der lst_2 ohne die lst_1 zu sortieren:
Code: Alles auswählen
lst_1 = [1, 2, 3]
lst_2 = [[1,0,0], [2,0,0], [3,0,0]]
Hier noch ein praxisbezogenes Beispiel:
In der ersten Liste habe ich Linien und in der zweiten Liste habe ich die Koordinaten der Linienstartpunkte. Jetzt will ich die Linien nach dem aufsteigenden X-Wert sortieren. Wie gehe ich da am besten vor?
Danke für die Antworten
Re: Erste Liste nach der zweiten sortieren
Verfasst: Donnerstag 13. September 2012, 11:53
von EyDu
Hallo und willkommen im Forum!
Die sort-Methode auf Listen hat eine key-Argument, das solltest du dir mal anschauen. Am besten erstellst du eine Liste aus lst_1 und lst_2 (zip(lst_1, lst_2)) und sortierst diese dann entsprechend. Danach extrahierst du dann die Daten wieder aus der Liste.
Re: Erste Liste nach der zweiten sortieren
Verfasst: Donnerstag 13. September 2012, 11:58
von samid
Ahh. Ok, ich werde mir mal den Key anschauen. Danke.
Re: Erste Liste nach der zweiten sortieren
Verfasst: Donnerstag 13. September 2012, 18:38
von BlackJack
@samid: So etwas ist der Grund warum man zusammengehörende Daten nicht in „parallelen” Datenstrukturen ablegen sollte, sondern zusammen in einer Datenstruktur.
Re: Erste Liste nach der zweiten sortieren
Verfasst: Donnerstag 13. September 2012, 22:14
von samid
Danke für die Antwort BlackJack.
Aber gerade diese eine Datenstruktur versuche ich ja damit auch zu erstellen.
Ich habe es folgendermaßen gelöst:
Code: Alles auswählen
lst_3 = [item for item in zip(lst_1,lst_2)]
lst_3.sort(key = lambda x: x[1][0])
Jetzt habe ich gehört das anstatt lambda auch operator.itemgetter eingesetzt werden kann, nur komme ich nicht drauf wie ich:
in operator.itemgetter umwandeln kann.
Re: Erste Liste nach der zweiten sortieren
Verfasst: Donnerstag 13. September 2012, 22:18
von EyDu
Dein
ist nur kompliziert für
solltest du Python 3.x verwenden, dann einfach
Re: Erste Liste nach der zweiten sortieren
Verfasst: Freitag 14. September 2012, 06:34
von samid
Danke.
Re: Erste Liste nach der zweiten sortieren
Verfasst: Freitag 14. September 2012, 10:11
von samid
Jetzt habe ich es mit dem itemgetter ausprobiert. Nun geht es irgendwie nicht die Liste lst_3 nach dem index [1][2] zu sortieren. Ist:
dasselbe wie:
?
Re: Erste Liste nach der zweiten sortieren
Verfasst: Freitag 14. September 2012, 10:22
von deets
Lies doch einfach die Doku - da steht es.
http://docs.python.org/library/operator ... itemgetter
Oder probier es *aus*, in der Kommandozeile:
Code: Alles auswählen
>>> from operator import itemgetter
>>> l = [[1], [2]]
>>> itemgetter(1, 0)(l)
([2], [1])
Re: Erste Liste nach der zweiten sortieren
Verfasst: Freitag 14. September 2012, 10:52
von samid
Ok werde ich machen, ich finde die Doku etwas schwer zu lesen, da haben es andere Sprachen schon besser gelöst.
Re: Erste Liste nach der zweiten sortieren
Verfasst: Freitag 14. September 2012, 11:05
von deets
Warum arbeitest du dann nicht mit diesen besser dokumentierten Sprachen?
Re: Erste Liste nach der zweiten sortieren
Verfasst: Freitag 14. September 2012, 11:13
von samid

Sag mal was ist denn los. Fühlst du dich durch meine Fragen irgendwie genervt. Dafür sind doch die Foren da, um Fragen zu stellen. Oder?
Und das mit der Doku haben schon viele gemeint, dass es schwer zu lesen ist. Das hat aber nichts mit der Programmiersprache selbst zu tun.
Also ein Tip: Rauch erst mal eine Zigarette oder trink einen Tee bevor du dann auf meine Beiträge antwortest.
Gruß
Samid
Re: Erste Liste nach der zweiten sortieren
Verfasst: Freitag 14. September 2012, 11:44
von deets
Na, was ist denn mit dir los? Bist du der einzige, der sachliche Fragen stellen kann? Ich habe nicht gesagt, du sollst Python nicht verwenden. Ich habe dich gefragt, warum du es einsetzt, wenn du andere Sprachen kennst, mit denen du besser klarkommst.
Foren sind doch zum Fragen stellen da - hat hier gerade wer geschrieben....
Re: Erste Liste nach der zweiten sortieren
Verfasst: Freitag 14. September 2012, 12:13
von samid
Gut gekontert
Re: Erste Liste nach der zweiten sortieren
Verfasst: Freitag 14. September 2012, 17:07
von EyDu
Hmm, da habe ich mich wohl nicht richtig an die Semantik von itemgetter erinnert.
Re: Erste Liste nach der zweiten sortieren
Verfasst: Freitag 14. September 2012, 18:38
von Hyperion
samid hat geschrieben:Ok werde ich machen, ich finde die Doku etwas schwer zu lesen, da haben es andere Sprachen schon besser gelöst.
Welche denn so? Ich finde die Doku von Python schon ziemlich gut - sowohl inhaltlich als auch strukturell!
@Problem: Denk noch mal über BlackJacks Aussage nach. Auf Dauer willst Du nicht zwei separate Strukturen pflegen...
Re: Erste Liste nach der zweiten sortieren
Verfasst: Sonntag 16. September 2012, 23:41
von Leonidas
Hyperion hat geschrieben:Welche denn so? Ich finde die Doku von Python schon ziemlich gut - sowohl inhaltlich als auch strukturell!
Na die PHP-Doku wo es schlechten Beispielcode zum Copypasten in den Kommentaren gibt

Oder hat sich das inzwischen verändert?
Hat sich das eigentliche Thema schon gelöst oder sind da noch Fragen offen? Weil das so mit ``lambda`` ist schon hässlich, so.