Hallo, wieder eine Frage:
wie kann ich in einer Liste Einträge, die doppelt vorhanden sind löschen, sodass jeder Eintrag nur noch 1x vorkommt?
doppelte Einträge in einer Liste löschen
Code: Alles auswählen
list(set(original_list))
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Wobei, lieber so:
Code: Alles auswählen
sorted(set(original_list), key=original_list.index)
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Code: Alles auswählen
neue_liste3=(set(neue_liste2), key=neue_liste2.index)
print neue_liste3
Code: Alles auswählen
neue_liste3=sorted(set(neue_liste2), key=neue_liste2.index)
print neue_liste3
Der Fehler hat einen ganz einfachen Grund: Du kannst Listen nicht in eine Menge packen, da diese veränderbar sind.
Statt der Menge könntest du einfach eine weitere Liste verwenden, in welche du alle bereits verwendeten Elemente eingefügt hast.
Statt der Menge könntest du einfach eine weitere Liste verwenden, in welche du alle bereits verwendeten Elemente eingefügt hast.
Code: Alles auswählen
>>> l = [[1], [2], [4], [1], [5], [2], [1]]
>>> x = []
>>> n = []
>>> for e in l:
... if e not in x:
... n.append(e)
... x.append(e)
...
>>> n
[[1], [2], [4], [5]]
Das Leben ist wie ein Tennisball.
In diesem Fall solltest du als innere Datenstruktur lieber Tupel verwenden (da die Anzahl mit 3 ja fix ist). Dann funktioniert auch oben genanntes Beispiel.Michi_J hat geschrieben:und ich sollte eventuell dazu sagen, dass meine Liste aus Tupeln besteht mit mehreren Einträgen, im speziellen Fall X-, Y-, Z-Koordinate:
Liste = [ [XYZ1], [XYZ2], [XYZ3], [XYZ1],... ]
Code: Alles auswählen
In [6]: l = [(1,2), (3,4), (5,6), (1,2)]
In [7]: sorted(set(l), key=l.index)
Out[7]: [(1, 2), (3, 4), (5, 6)]
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher
http://ms4py.org/
Gerhard Kocher
http://ms4py.org/
siehe obenMichi_J hat geschrieben:ich habs jetzt so probiert, wie EyDu gesagt hat, hat auch geklappt...
Wie würde es denn mit dem sorted-Befehl funktionieren?
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher
http://ms4py.org/
Gerhard Kocher
http://ms4py.org/
Wenn du unveränderliche Objekte hast, dann hätte ich auch noch eine "Lösung":
Code: Alles auswählen
>>> l = [1,2,4,6,2,8,3,5,1,5,1]
>>> x = {}
>>> [x.setdefault(v, v) for v in l if v not in x]
Das Leben ist wie ein Tennisball.
@jbs: Die `sorted()`/`index()`-Lösung braucht man nur, wenn die Reihenfolge erhalten bleiben muss, und selbst dann ist sie IMHO sehr unschön, da sie quadratische Laufzeit hat. Das geht auch besser.
Alles klar. Eydus Lösung sieht da schöner aus.BlackJack hat geschrieben:@jbs: Die `sorted()`/`index()`-Lösung braucht man nur, wenn die Reihenfolge erhalten bleiben muss, und selbst dann ist sie IMHO sehr unschön, da sie quadratische Laufzeit hat. Das geht auch besser.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]