Python循環列表刪除元素問題
阿新 • • 發佈:2017-09-21
替代 循環 pan 不能 移動 列表 nbsp python 判斷
有人會遇到這種問題,遍歷列表,想刪除列表中的某幾個元素,執行後發現有些並沒有刪除到,
比如以下代碼
a=[1,2,3,4,5,6]
print(a) for i in a: if i==3 or i==4: a.remove(i)
print(a)
從代碼看主要就是想刪除a列表中的 3 4 元素,
程序的結果是:
[1, 2, 3, 4, 5]
[1, 2, 4, 5]
結果不盡人意,原因是我們在遍歷的時候
- seek走到了3元素的位置
- if判斷remove 3 這個元素
- 3這個位置刪除後位置空出來了,後面的元素就往前移動,替代了3的位置
- seek繼續走到下一個,本來是4元素的,但是4元素往前移了,就錯過了,seek走到了5元素的位置
避免這個這個問題的就需要避免for循環,當然上面的例子可以有很多方法去刪除,但是當我們遇到一個不能避免for循環的情況,可以將要刪除的元素存儲到另外一個列表裏面,最後一並刪除.
a=[1,2,3,4,5] d=[] print(a) for i in a: if i==3 or i==4: d.append(i) for i in d: a.remove(i) print(a) #[1, 2, 3, 4, 5] #[1, 2, 5]
Python循環列表刪除元素問題