2016-10-24 10 views
0

Wie aus der Liste in Python entfernen?Python entfernen Text aus einer Liste finden

a=[('hello','home','today','cry'),('hello','saturday','today','cry'),('bye','home','today','cry')] 

wenn find 'Samstag' alle ('hello','saturday','today','cry') entfernen

so habe ich

a=[('hello','home','today','cry'),('bye','home','today','cry')] 

dank

Antwort

6

Verwenden Sie ein Liste Verständnis mit einem Filter:

>>> [tup for tup in a if 'saturday' not in tup] 
[('hello', 'home', 'today', 'cry'), ('bye', 'home', 'today', 'cry')] 

Referenz:

List comprehensions

+0

thanks this works! – Silvio

1

ich die Forderung des OP am Aufkleben den Artikel aus der Liste zu entfernen (nicht die neue Liste erstellen). Also, Liste Verständnis ist nicht der vorgeschlagene Ansatz. Das Ergebnis kann mit for Schleifen wie erreicht werden:

>>> for i, sublist in enumerate(list(a)): # list(a) to iterate over the copy of a 
...  if 'saturday' in sublist: 
...   del a[i] 
... 
>>> a 
[('hello', 'home', 'today', 'cry'), ('bye', 'home', 'today', 'cry')] 

Statt Iterieren über a, ich bin iterieren list(a), weil das Objekt aus der Liste delating, auf dem Ergebnis in unerwarteten Ergebnisse iterieren.


Falls es OK neue Liste und Updates mit Original zu erstellen, abgesehen von Liste Verständnis Ansatz (die bereits erwähnt wird), können Sie filter() wie verwenden:

>>> list(filter(lambda x: 'saturday' not in x, a)) 
[('hello', 'home', 'today', 'cry'), ('bye', 'home', 'today', 'cry')] 
+0

Warum nicht einfach 'a' gleich dem Listenverständnis setzen? Dies ist nicht der pythonische Weg, dies zu tun. –

+0

@NickA: laut OP erwähnte er * "remove from list" *. * List Comprehension * ist die Erstellung der neuen Liste und ersetzt sie durch das Original. Aber ich stimme dem Teil * zu, dass das Listenverständnis pythisch * ist –

0

Schalten eines ein in eine Liste von Listen in und dann jeweils prüfen die Unterlisten für ‚samstag‘

a=[('hello','home','today','cry'),('hello','saturday','today','cry'),('bye','home','today','cry')] 
a=list(a) 
for x in range (len(a)-1,-1,-1): 
    if 'saturday' in list(a[x]): 
      a.pop(x) 

Dies ergibt a = [(‚Hallo‘, ‚Heimat‘, ‚heute‘ , 'weinen', ('tschüss', 'zuhause', 'heute', 'weinen')]

Verwandte Themen