删除列表内多个重复元素

388 阅读1分钟

利用list.remove()可以删除列表某一指定的元素第一次出现的位置的值

错误代码示范:

for i in a:        
    if i=='此用户未填写评价内容'  :           
    a.remove('此用户未填写评价内容')    
print(a.count('此用户未填写评价内容'))    
print(len(a))

>> 36

正确代码示范:

for i in range(len(a)-1,-1,-1):        
    if a[i]=='此用户未填写评价内容'  :            
    a.remove('此用户未填写评价内容')    
print(a.count('此用户未填写评价内容'))    
print(len(a))

>> 0

(列表a中共有334条‘此用户未填写评价内容’)

错误及原因

问题在于错误的写法并没有语法上的错误,同样也能删除一部分指定的元素,但是却无法全部删除,而正确的写法能保证全部删除。

remove 在for 循环/正序循环中动态的改变了list的长度和每一个元素的位置,会产生列表下标越界错误,并不能把指定的元素全部删掉。