Seite 1 von 1
alle gleichen elemente aus liste löschen
Verfasst: Samstag 22. Januar 2005, 15:51
von Gast
Hallo,
ich habe ein wirklich triviales Problemchen.
Ich habe eine Liste und will eine Elemente das mehrmals vorkommt löschen.
Die Funktion remove löscht aber nur immer das erste Element und eine for-Schleife über alle Elemente laufen zu lassen udn immer remove aufzurufen finde ich ist höchst ineffizient.
Gibt es keinen anderen Weg???
Danke
Verfasst: Samstag 22. Januar 2005, 16:07
von XT@ngel
Verfasst: Samstag 22. Januar 2005, 16:20
von Gast
super andreas,
vielen Dank!!!
Wie immer exzellent super schnelle und effiziente Hilfe in diesem Forum!!!
Danke
Verfasst: Samstag 22. Januar 2005, 16:35
von Milan
Ich glaube ich hab noch einen Tipp für's nächste mal:
hier. Der funktioniert manchmal noch schneller

Verfasst: Samstag 22. Januar 2005, 16:36
von Gast
ah,
hi nochmal ich,
leider doch nicht soooo ganz das was ich suche.
Wenn ich ne Liste habe
list = ["A","H","A","T","B","A"]
will ich nur alle A's löschen und die Sortierung soll erhalten bleiben also sollte rauskommen:
redlist = ["H","T","B"]
vielleicht kann mir einer helfen?
Dangöö
Verfasst: Samstag 22. Januar 2005, 17:27
von Milan
Hi. Dann musst du eben zuerst feststellen, ob ein Element mehrfach auftaucht und es dann löschen. Das kann man machen, während man die Liste durchgeht und falls man ein doppetes findet es wieder rausnehmen:
Code: Alles auswählen
def f(iterable):
erg=[]
mehrfach=[]
for el in iterable:
if el in mehrfach:
continue
elif el in erg:
erg.remove(el)
mehrfach.append(el)
continue
else:
erg.append(el)
return erg
Damit führe ich eine schwarze Liste, ob ein Element mehrfach vorkommt und gehe dementsprechd vor, wenn ich alle neuen Elemente zusammenstelle.
Verfasst: Samstag 22. Januar 2005, 19:36
von Dookie
Hi,
oder falls die alte Liste erhalten bleiben soll:
Code: Alles auswählen
l = ["A","H","A","T","B","A"]
redlist = [for x in l if x != "A"]
Gruß
Dookie
Verfasst: Samstag 22. Januar 2005, 19:51
von Gast
peinlich,
darauf hätte man auch von selbst kommen können....
Trotzdem vielen DANK!