Re: [問題] 奇怪的問題...

看板Python作者 (朱子)時間17年前 (2008/03/27 17:51), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串4/4 (看更多)
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

03/27 18:24, , 1F
是的 不過這跟內部實作有關 最好別依賴這種行為
03/27 18:24, 1F

03/27 19:16, , 2F
謝謝
03/27 19:16, 2F

03/28 18:22, , 3F
從list的尾端開始刪除
03/28 18:22, 3F

04/08 17:03, , 4F
從list的尾端開始刪除 +1
04/08 17:03, 4F
文章代碼(AID): #17wsuoIL (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):
文章代碼(AID): #17wsuoIL (Python)