看板 Python 關於我們 聯絡資訊
sorry 看不太懂 我這樣理解不知道對不對 for i in L: L.remove(i) 的效果相當於 i=0 while i < len(L): L.remove(L[i]) i=i+1 所以如果本來L=['a','b','c','d','e'] i=0時 L.remove(L[0])之後 L 變成 ['b','c','d','e'] 所以i=1時 L.remove(L[1]),去掉的會是'c',而'b'就被跳過了 不知道這樣想對不對? ※ 引述《chmate ([][][])》之銘言: : 推 Yawper:原來如此 雖然不了解為何會被跳過 但還是謝謝 =.= 03/27 13:34 : python的list內部是array類的東西 : 在iteration時移除一個element : 內部的index並不會被改變 : 少了一個element但index沒變 : 就有些被跳過了 : python的list在remove或del後 : iteration會變成未定義的狀態 : 大部份的language通常都這樣做 : C++的STL和Java也是 : 因為做出仍然有效的iterator非常麻煩且困難 : 如果還是需要這種型式的寫法 : 可以這樣做 : for i in a[:]: : ... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.213.158
chmate:是的 不過這跟內部實作有關 最好別依賴這種行為 03/27 18:24
mantour:謝謝 03/27 19:16
rexrainbow:從list的尾端開始刪除 03/28 18:22
silveran:從list的尾端開始刪除 +1 04/08 17:03