Voglio rimuovere tutti gli elementi in un elenco che contiene (o non contiene) un insieme di caratteri specifici, tuttavia sto correndo per problemi di iterazione sull'elenco e rimozione di elementi come Vado. Di seguito sono riportati due esempi praticamente uguali di questo. Come puoi vedere, se due elementi che dovrebbero essere rimossi si susseguono l'un l'altro, il secondo non viene rimosso.Rimozione di elementi da un elenco contenente caratteri specifici
Sono sicuro che ci sia un modo molto semplice per farlo in Python, quindi se qualcuno lo conosce, per favore aiutatemi - sto facendo una copia dell'intero elenco e iterando su uno, e rimuovendo gli elementi nell'altro ... Non è una buona soluzione presumo
>>> l
['1', '32', '523', '336']
>>> for t in l:
... for c in t:
... if c == '2':
... l.remove(t)
... break
...
>>> l
['1', '523', '336']
>>> l = ['1','32','523','336','13525']
>>> for w in l:
... if '2' in w: l.remove(w)
...
>>> l
['1', '523', '336']
capito:
>>> l = ['1','32','523','336','13525']
>>> [x for x in l if not '2' in x]
['1', '336']
vorrebbe ancora sapere se c'è qualche modo per impostare l'iterazione indietro di un set quando si utilizza per la x in l anche se.
Duplo-ish: http: //stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python – bhangm
Si prega di accettare la risposta che ti ha aiutato a risolvere il tuo problema invece di aggiungere "Risolto" per il titolo. Fare clic sul segno di spunta verde accanto a una risposta per accettarlo. (Se nessuna delle risposte ti ha aiutato, per favore aggiungi una tua risposta spiegando come hai risolto il problema.) Grazie e benvenuti a Stack Overflow. –