python的for循环存在漏删的情况
在平常我们在添加、修改、删除ist元素时,都会使用到for循环,在添加、修改元素时,使用for循环都是没有问题的,而在使用for循环删除元素时,就会存在只将要删除的第一个元素删除,而后面要删除的元素,都没有被删除,这是很恶心的,
首先我先写一些平常我们使用的方法:
a = [1, "None", 2, 3, 4, "None"]
for i in a:
if i == "None":
a.remove(i)
print(a)
这种办法显然是行不通的,只将第一个None删除了,而后面那个并没有被删除
现在我来写一下正确的方法,共有三种方法,大家根据自己喜好选择
第一种方法
a = [1, "None", 2, 3, 4, "None"]
for j in range(len(a)):
for i in a:
if i == "None":
a.remove(i)
print(a) # 这样就会将列表中的"None"全部删除了
第二种方法,把要删除的元素放在一个新的列表,在循环新的列表将原有列表元素删除
a = ["1", "", "None", "2", "None"]
b = []
for i in a:
if i == "" or i == "None":
b.append(i)
for i in b:
a.remove(i)
print(a)
第三种方法
a = ["1", "", "None", "2", "None"]
i=0
while i<len(a):
if a[i] == "" or a[i] == "None":
a.remove(a[i])
else:
i+=1
print(a)
就是这三种方法,我个人还是比较喜欢第三种方法,因为第一种方法有两个for循环,会影响性能,第二种还要创建列表,还要有两次for循环,也很难受,所以还是第三种方法while循环的方法较好些,如果大家有更好的建议,欢迎大家指出来。。