错误示范
写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
优点:一次遍历,快
转载于:https://www.cnblogs.com/sbj123456789/p/11252718.html
相关资源:JAVA上百实例源码以及开源项目