我想刪除包含(或不包含)一組特定字符的列表中的所有元素,但是我遇到了迭代列表中的問題以及將元素作爲我一直在前進。下面給出了兩個幾乎相同的例子。正如你所看到的,如果應該刪除的兩個元素直接跟在另一個之後,那麼第二個元素不會被刪除。刪除包含特定字符的列表中的元素
我確定在Python中有這樣一個非常簡單的方法,所以如果有人知道它,請幫助我 - 我正在製作整個列表的副本並迭代一個,並刪除其他元素...這不是個很好的解決方案,我認爲
>>> 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']
想通了:
>>> l = ['1','32','523','336','13525']
>>> [x for x in l if not '2' in x]
['1', '336']
仍想知道是否有任何方式使用中長x時設置迭代回一組雖然。
Dupe-ish:http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python – bhangm 2010-08-05 15:43:22
請接受幫助您解決問題的答案,而不是添加「解決」的標題。點擊答案旁邊的綠色複選標記以接受答案。 (如果沒有答案幫助你,那麼請添加你自己的答案,解釋你是如何解決問題的。)謝謝,歡迎來到Stack Overflow。 – 2010-08-05 15:48:10