Re: [問題] 奇怪的問題...
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
03/28 18:22, 3F
推
04/08 17:03, , 4F
04/08 17:03, 4F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章