Seite 1 von 1

werte aus list löschen

Verfasst: Dienstag 6. Mai 2008, 20:06
von lorbinchen
Ich habe eine liste aus trings die zB so aussehen kann:
('a','b','a,'c','c')
und jetzt brauche ich eine vernünftige funktion um alle vorkommen eines bestimmten strings zu löschen
ich hab mir folgendes gebastelt:

Code: Alles auswählen

mylist= ['a','b','a','c','c']
killme= 'a'
key= 0
for i in mylist:
	if i==killme:
		mylist.pop(key)
	key+=1
allerdings habe ich irgendwie das gefühl das es nicht gerade die beste lösung ist und da in meinem skript diese funktion sehr sehr häufig gebraucht wird schlägt es sich auch negativ ind er performance nieder : (
wäre sehr dankbar für das aufzeigen eines eleganteren weges. programmiere noch nicht so lange in python.

Verfasst: Dienstag 6. Mai 2008, 20:17
von EyDu
So eine ähnliche Frage gab es erst vor wenigen Tagen: http://www.python-forum.de/topic-14470.html.

Bei dir geht es aber noch etwas einfacher:

Code: Alles auswählen

mylist= ['a','b','a','c','c']
killme = 'a'
mylist = [for x in mylist if i!=killme]
Edit: Zum Nachlesen: Das in den eckigen Klammern ist eine "List Comprehension".

Verfasst: Dienstag 6. Mai 2008, 20:19
von BlackJack
Und das ganze nochmal syntaktisch korrekt:

Code: Alles auswählen

In [188]: mylist = ['a', 'b', 'a', 'c', 'c']

In [189]: killme = 'a'

In [190]: mylist = [item for item in mylist if item != killme]

In [191]: mylist
Out[191]: ['b', 'c', 'c']

Verfasst: Dienstag 6. Mai 2008, 20:22
von EyDu
Oh man, was habe ich denn da grausames zusammengeschrieben :roll: ?! Das kommt davon, wenn man den ganzen Tag Java-Code angeschaut hat :x .

Verfasst: Dienstag 6. Mai 2008, 20:22
von lorbinchen
hui danke für die super antworten : )
leider hab ich dein erwähnten thread nicht mit der suchfunktion gefunden

Verfasst: Dienstag 6. Mai 2008, 20:26
von EyDu
lorbinchen hat geschrieben:leider hab ich dein erwähnten thread nicht mit der suchfunktion gefunden
Erkennt man auch nicht auf den ersten Blick, daher habe ich den Link gleich mal mit angegeben.