看板 Python 關於我們 聯絡資訊
※ 引述《Yawper (J'en ai marre!)》之銘言: : 想請教一個for loop的問題 : [0.20000000000000001, 0.29999999999999999, 0.29999999999999999, 0, 0, 0, 0, 0] : ... if p==0: : ... l.remove(p) : ... : [0.20000000000000001, 0.29999999999999999, 0.29999999999999999, 0, 0] : 為甚麼這個for loop只能remove掉三個0呢? : 如果我想把這個list中所有等於0的object都移除的話要怎麼修改呢? : 謝謝 會有 element 被跳過: >>> a = range(10) >>> for p in a: ... if p%2: ... a.remove(p) ... print a ... else: ... print a.index(p) ... 0 [0, 2, 3, 4, 5, 6, 7, 8, 9] [0, 2, 4, 5, 6, 7, 8, 9] [0, 2, 4, 6, 7, 8, 9] [0, 2, 4, 6, 8, 9] [0, 2, 4, 6, 8] 如上,2, 4, 6, 8 都沒有被 iterate 到。 結論,不要在 for 裡面刪被 iterate container 的元素。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 164.107.248.238
Yawper:原來如此 雖然不了解為何會被跳過 但還是謝謝 =.= 03/27 13:34