python中刪除list的特定值的元素的方法


錯誤示范

寫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

優點:一次遍歷,快

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM