2016-10-11 16 views
0

我有兩個列表,我想在Python中循環查找匹配並將其刪除。 第一個被稱爲SavedWordData,它的長度爲2156,第二個被稱爲listReturned,它的長度爲1000通過Python中的2個列表進行循環移除匹配

於是我嘗試這樣做:

maxLenReturned = len(listReturned) 
maxLenSaved = len(savedWordData) 

    for i in range(maxLenSaved): 
    for x in range(maxLenReturned): 
     if savedWordData[i] == listReturned[x]: 
      savedWordData.pop(i) 

但是,當我做到這一點我得到一個錯誤消息,說: IndexError:列表索引超出範圍 這表明我超出了某些列表的範圍,但我不明白爲什麼和我到外面列出哪些列表它的範圍?

+1

如果您在列表中調用pop(),則會減小其大小。因此它引發了例外。 –

+0

@GurupadMamadapur嗯沒關係。我怎樣才能達到我想做的同樣的事情,而不用做流行音樂? 我應該做一個新的臨時列表,我存儲所有不匹配的數據? – anderssinho

回答

2

當你在列表中調用pop()時,它會減小它的大小,所以假設你有一個大小爲100的列表,並且你彈出了50個元素。當你試圖獲取第51個元素時,它會引起Index out of range錯誤,因爲現在大小減少到50.

您應該瞭解列表解析。他們真的很棒,你可以用一條線完成任務。

savedWordData = [x for x in savedWordData if x not in listReturned] 

就是這樣。 listReturned中的所有物品都不在savedWordData中。

+1

非常感謝你這個有用的答案。 也會閱讀列表解析,因爲它看起來真的很棒。 – anderssinho

相關問題