→ icetofux: 對了,我知道有更簡單的方式可以copy list,我是故意 11/10 15:32
→ icetofux: 這樣做在實驗,想對python這語言有更多了解,謝謝。 11/10 15:33
→ gmccntzx1: 你把for element in list1那邊改用enumerate,印出每次 11/10 16:01
→ gmccntzx1: 跑的index,你就知道為什麼了 11/10 16:01
→ gmccntzx1: 即`for idx, element in enumerate(list1)` 11/10 16:02
推 tiefblau: index被你remove移動到拉~ 11/10 16:14
→ icetofux: 謝謝兩位,我想通這個問題了。 11/10 16:17
推 LaughPoint: 不懂 list的remove不是刪除指定的值嗎? 11/10 18:10
→ LaughPoint: remove是記值去刪index嗎? 11/10 18:18
→ gmccntzx1: 問題是在被迭代的list1被更動,不是remove影響到index 11/10 18:23
推 LaughPoint: 恩恩 剛剛也想到了 謝謝解答 11/10 18:25
→ gmccntzx1: 迴圈開始後,index會在每次重新迭代時+1,但是list1長度 11/10 18:25
→ gmccntzx1: 會逐漸減少,導致迴圈不會執行到原有list1長度的次數 11/10 18:26
→ gmccntzx1: 而list1中的元素是從index小的開始被移除,所以每往下一 11/10 18:27
→ gmccntzx1: 次迭代,移除的元素就不是實際上想移除的 11/10 18:27
→ gmccntzx1: @LaughPoint 不會,小事 11/10 18:28
→ gmccntzx1: 再幫補充一下,如果真的要用這種做法去移除元素,可以從 11/10 18:29
→ gmccntzx1: index較大的開始移除; 或著加一個counter,記下已經移除 11/10 18:30
→ gmccntzx1: 的元素數目,去修正要移除元素的index的位置 11/10 18:30
推 Yshuan: 很多語言都有這個問題 python不會這樣寫還是真的沒碰過 11/10 19:35
推 s89227: 真的要寫這種用while條件設list長度會比較好 11/11 01:39
推 checkIO: 我會用while(lista): listb.append(lista()) lista.remo 11/11 23:10
→ checkIO: ve() 11/11 23:10