我一直在試圖找到一些已完成我想做的事情,但我找不到任何東西。查找並從列表中刪除列表
我有這個名單,即
rows =
[['Jan 31', ' 2014 19:48:30.096606000', '0x10', '0x00000000', '0x0f7864ef', '0x0f7864f1', '', 'blahblah', 'other \n'],
['Jan 31', ' 2014 19:48:30.829329000', '0x10', '0x00000000', '0x0f920978', '0x0f92097a', '', 'blahblah', 'anotherr \n']]
我需要找到並通過這樣的第五項從列表中刪除搜索列表:
search == '0x0f7864ef'
if any(e[4] == search for e in rows):
如果搜索存在變種那麼我得到一個真實的,但我不知道如何從「行」中刪除它。並做類似rows.remove(e)
只是返回一個錯誤
我已經嘗試循環一個集合和刪除時發現,但我得到一個錯誤。另外,我寧願不必循環遍歷集合/列表。這是我的嘗試:
>>> a = {('1','da','vi'), (2,'be','vi') }
>>> for item in a:
... if 'da' in item:
... a.remove(item)
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: Set changed size during iteration
>>> a
set([(2, 'be', 'vi')])
即使該項目已被刪除,我得到了一個錯誤......
謝謝!
你好,謝謝你的回答。使用lamda就會返回列表*不匹配,並且圍繞它的其他戰爭將返回匹配行。如果我的列表非常大,創建一個過濾出匹配ID的新列表,如果我在列表中有成千上萬的項目,這會非常聰明嗎?我首先需要獲取匹配的項目並將其保存到某個位置(文件),然後再次執行它以過濾OUT項目,將列表存儲在不同的var中,然後再將其複製到原始var,然後全部完成再次爲下一個價值...你覺得呢? –
我不確定我是否理解完整的問題。我認爲你只需要刪除特定位置的元素,以匹配條件。 –
這是指向正確方向的答案。我所做的是過濾和過濾。我過濾進行匹配,並過濾掉匹配。謝謝@nadir! –