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

优点:一次遍历,快

 

posted @ 2019-07-26 20:32  sbj123456789  阅读(13392)  评论(0编辑  收藏  举报