Seite 1 von 1

Listenelemente entfernen, die Suchmuster entsprechen

Verfasst: Mittwoch 3. August 2005, 16:50
von JoHo
Hallo!
Habe folgende Liste:

Code: Alles auswählen

'abcdef_irgendwas1','abcdef_irgendwas2','abcdef_irgendwas3','abcdef_irgendwas4','mnkopq_irgendwas5','mnkopq_irgendwas6','mnkopq_irgendwas7']
nun möchte ich alle Listenelemente entfernen, die mit "abcdef" beginnen.

Kann mir bitte jemand schreiben wie das geht? Hab mir ein konstrukt mit einer Schleife gebaut, aber das schlägt daran fehl, dass ja die Indices sich verschieben.

Schon mal Danke!!

Gruß JoHo

Re: Listenelemente entfernen, die Suchmuster entsprechen

Verfasst: Mittwoch 3. August 2005, 17:09
von gerold
JoHo hat geschrieben:Kann mir bitte jemand schreiben wie das geht? Hab mir ein konstrukt mit einer Schleife gebaut, aber das schlägt daran fehl, dass ja die Indices sich verschieben.
Hi JoHo!

Code: Alles auswählen

>>> l = ['abcdef_irgendwas1','abcdef_irgendwas2','abcdef_irgendwas3','abcdef_irgendwas4','mnkopq_irgendwas5','mnkopq_irgendwas6','mnkopq_irgendwas7']
>>> print [ item for item in l if not item.startswith("abcdef") ]
['mnkopq_irgendwas5', 'mnkopq_irgendwas6', 'mnkopq_irgendwas7']
>>> 
mfg
Gerold
:-)

Verfasst: Mittwoch 3. August 2005, 17:10
von Leonidas
Einfach:

Code: Alles auswählen

In [4]: l = ['abcdef_irgendwas1','abcdef_irgendwas2','abcdef_irgendwas3','abcdef_irgendwas4','mnkopq_irgendwas5','mnkopq_irgendwas6','mnkopq_irgendwas7']

In [5]: l2 = [element for element in l if not element.startswith('abcdef')]

In [6]: l2
Out[6]: ['mnkopq_irgendwas5', 'mnkopq_irgendwas6', 'mnkopq_irgendwas7']
Edit: Zu langsam ;)

Verfasst: Mittwoch 3. August 2005, 19:14
von Gast
Vielen vielen Dank euch beiden,
geht ja echt einfach!

Verfasst: Mittwoch 3. August 2005, 22:32
von Joghurt
Eine weitere Möglichkeit:

Code: Alles auswählen

l2 = filter(lambda x:not x.startswith("abcdef"), l)