python的for循环删除元素存在漏删情况的解决

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循环的方法较好些,如果大家有更好的建议,欢迎大家指出来。。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值