具體的場景是這樣的:python
我當時第一次是這麼寫的:函數
這種寫法看起來並沒什麼問題,獲得的應該是一個空的列表,其實否則,運行後的結果是這個樣子的:測試
咦?究竟是哪裏出了問題呢,其實只要去了解一下 for 循環的底層原理,就很容易明白:spa
data 這個列表在內存中是這樣存儲的:blog
當第一次執行 for 循環時,默認刪除索引爲1 的元素,即刪除 「賣茶葉」,刪除後的列表是:索引
當第二次執行 for 循環時,index +1,即刪除索引爲2 的元素,注意:這時 的 data 已經發生了變化,此時索引爲 2 的元素不是「賣面膜」 而是 「賣保險」,刪除後的列表是:內存
當第三次執行 for循環時,index 在 2的基礎上再加1,即刪除索引爲3,從上面的列表中咱們能夠看到,索引爲 3 的元素是「賣手機」,刪除後的列表是:for循環
第四次執行for 循環時,index 在3的基礎上加1,即刪除索引爲4的元素,而這時的列表只有兩個元素了,沒法找到索引爲4 的元素,即沒法執行刪除操做,因此會將列表直接打印出來。基礎
此次再運行後的結果是:原理
居然真的刪掉了,咱們再來詳細看一下它的原理:
data 這個列表在內存中是這樣存儲的:
第一次執行 for 循環時,因爲是倒序因此會默認刪除最後一個元素,即「賣手機」,刪除後的列表是:
後面會以此類推,直到把整個列表清空。
最後,總結一下,在使用for 循環遍歷刪除列表中的元素時,必定不要用正序去遍歷,用反序遍歷才能達到將列表中的元素清空。
最後的最後,再爲你們奉上幾種其餘的方法,也能夠達到遍歷刪除列表中元素的效果哦!
方法一:注意:pop() 函數默認是刪除列表的最後一個元素哦
方法二:
哪怕是最沒有但願的事情,只要有一個勇敢者去堅持作,到最後就會擁有但願。