錯誤示范
寫python時常常會遇到想刪除list中的特定值的元素的情況,但如果用一個循環遍歷的話顯然是行不通的,比如
for i in range(len(list_i)): if list_i[i] == value: list_i.pop(i)
或者
for i in list_i: if i == value: list_i.remove(i)
都會出現問題,因為pop()或remove()之后list已經發生改變,繼續迭代會出現問題。
因此,由於list底層基於線性表(數組)的特性,不能使用這種方法刪除,要用其他方法。
正確寫法
方法一:
while value in list_i: list_i.remove(value)
優點:簡單粗暴
缺點:不是一次遍歷,慢
方法二:(推薦)
j = 0 for i in range(len(list_i)): if list_i[j] == value: list_i.pop(j) else: j += 1
優點:一次遍歷,快
