2016-10-27 31 views
3

我有一個包含我的數據,以下形式的列表:在迭代時修改列表總是錯誤的嗎?爲什麼?

data = [[[1, 3, 4, 5, 7], [A, B, C]], 
     [[2, 3, 8, 2, 9], [F, C, C]], 
     [[6, 3, 1, 3, 1], [F, E, D]], 
     [[2, 3, 7, 0, 3], [F, C, F]], 
     ... 
     [[0, 3, 3, 4, 5], [F, B, A]]] 

在我的計劃,我會檢查是否有具有固定的值(如只包含3秒,第二列的列。如果。發現,我應該從數據用下面的代碼刪除一個,我們可以遍歷列表,並通過元素刪除此列元素的解決方案:。

for data_line in data: 
    del data_line [0][1] 

這是正確與否可以這樣的原因?不穩定或其他問題? 請解釋..

在此先感謝

解決方案的概要

感謝所有誰對這個問題貢獻,總結了寶貴的貢獻之下,我們可以說:

這是確定修改你正在遍歷的列表的內容,但不刪除它的元素,即修改不改變MAIN列表的長度,那麼沒有問題。

+2

在發佈這個問題之前,你有搜索(例如谷歌)嗎?我認爲沒關係,因爲你不會修改列表本身,但他的內容。 – Stargateur

+0

@Stargateur我搜索了,但意見不同,這就是爲什麼我想要專家的解釋。感謝您的評論。 –

+4

與標題相反,你迭代的列表不是你修改的列表,所以沒關係。 – polku

回答

6

您可以修改的元素列表,而迭代的的性質,但它是相當不明智的修改列表成員本身。你在做前者,所以不用擔心。