你好,我有一個循環來計算我的MySQL數據庫中的不同記錄,然後將數字保存到列表中。這裏是清單:
[1L, 2L, 2L, 5L, 4L, 1L, 1L, 1L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 2L, 4L, 2L, 1L, 3L, 1L, 2L, 4L, 1L, 2L, 1L, 1L, 3L, 1L, 3L, 1L, 5L, 2L, 1L, 1L, 5L, 1L, 1L, 1L, 4L, 2L, 1L, 3L, 2L, 1L, 2L, 2L, 2L, 3L, 1L, 1L, 3L, 2L, 2L, 1L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 3L, 3L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L]
清理我的清單
現在我去通過這個名單,我想只留下一個數字(指1L,2L等)我使用這個循環:
for number in legend:
print number # to check what number it does currently
counter = legend.count(number)
while counter > 1:
legend.remove(number)
counter -= 1
然後我看到它檢查1,2,3,4,3,2,1 ...爲什麼是這樣?爲什麼這個循環不會檢查數字5?最後列表看起來像這樣:
[5L, 5L, 5L, 4L, 3L, 2L, 1L]
這意味着它的工作原理,但它爲什麼不去5號?提前
您正在遍歷'legend'並在循環中刪除元素。你不應該修改你正在迭代的序列。 – 2011-05-26 09:52:56
thx有意義的人^^ – 2011-05-26 09:54:53
這不是一個好辦法,因爲你的算法是O(n^2)。您遇到的問題是您在循環播放時正在修改'legend「。 – 2011-05-26 09:55:29