Verschachtelte Listen vergleichen

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
Friedericus
User
Beiträge: 25
Registriert: Dienstag 21. September 2010, 14:59

Hiho,

ich hab grad ein Problem, an dem ich nicht weiterkomm:

ich hab eine Liste, z.B.:

Code: Alles auswählen

a = [[1,2],[2,2],[3,2],[1,3],[2,3],[3,3]]
Nun sollen diese Wertepaare in eine neue Liste übertragen werden.
Dabei soll der erste Wert eines jeden Paares mit dem ersten Wert in der neuen Liste verglichen werden, und falls dieser Wert schon existiert, nicht einsortiert werden.

Die neue Liste sollte dann so aussehen:

Code: Alles auswählen

b = [[1,2],[2,2],[3,2]]
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo!

Das kannst du mit Mengen (sets) erledigen.

Sebastian
Das Leben ist wie ein Tennisball.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Achtung: Nicht performant!

Code: Alles auswählen

>>> a = [[1,2],[2,2],[3,2],[1,3],[2,3],[3,3]]
>>> [e for i,e in enumerate(a) if i<=zip(*a)[0].index(e[0])]
[[1, 2], [2, 2], [3, 2]]
Friedericus
User
Beiträge: 25
Registriert: Dienstag 21. September 2010, 14:59

Also ich hab das jetzt mit Mengen mal versucht, aber set() will ja offenbar keine Wertepaare
BlackJack

@Friedericus: Dir geht es ja auch nicht um das Paar sondern um den ersten Wert. Du wirst schon etwas Programmieren müssen und nicht einfach nur `set()` Anwenden und fertig.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Friedericus hat geschrieben:Also ich hab das jetzt mit Mengen mal versucht, aber set() will ja offenbar keine Wertepaare
Das liegt nicht an den Wertepaaren, sondern daran, dass es sich bei den von dir dafür verwendeten Sequenzen um Listen handelt, die veränderlich sind. Wenn du stattdessen mit Tupeln arbeiten würdest, könntest du ein set daraus machen. Allerdings hilft dir das bei der Lösung deiner Problemstellung natürlich auch nicht, weil - wie BlackJack schon angemerkt hat - es ja nicht damit getan ist, aus der Liste eine Menge zu machen.
Antworten