python中的remove函数简析(关于for循环中使用remove)

现在有一个要求,需要你从0到100之间,去掉能被2整除,和能被3整除的数。

介绍:remove() 函数可以「删除」列表中的指定「元素」

# 1、准备数据
a = range(101)
# 2、写出条件
for i in a:
    if (i%2==0) and (i%3==0):
        a.remove(i)
print(a)

但会报错:
在这里插入图片描述
根据提示,这里我们加上一句(因为remove是关于list的函数):

a = list(a)

得到如下结果:

可以看出已经得到我们想要的结果了。

但我在对这个函数做搜集的时候,发现一个有意思的例子:

list1 = [1, 1, 1, 1, 1]

print('删除前:', list1)

for i in list1:
    if i == 1:
        list1.remove(i)

print('删除后:', list1)

这是这段代码运行的结果,同样是for循环,这段代码没有得到我们想要的结果,还有2个1没有被删除,但是我们之前的代码却给出了我们想要的结果,这是为什么呢?
在这里插入图片描述
只看这个结果我们发现,循环次数减少了,按照我们的代码,应该循环5次才对,但是它只循环了3次,实际上,每删除一个元素,列表的长度就会减一,for就会少循环一次。

那为什么我们给出的第一个例子可以呢,我猜测是第一个例子条件宽松,虽然循环减少了,但我们的要求需要的循环次数不多,剩下的循环也可以完成要求。
那如果要求的循环次数大于减少的循环次数呢?也许条件就无法完全完成。
对此,给出如下例子:

x = []
for i in range(50):
    x.append(1)
for j in range(50):
    x.append(2)
    
print(x)

在这里插入图片描述
在这里插入图片描述
可以看出这里有100个数,其中50个1,50个2,我们将1去除。我们先推算以下:去除50个1,循环至少要走50次,

print('删除前:',x)

for i in x:
    if i == 1:
        x.remove(i)

print('删除后:', x)

我们给出结果:
在这里插入图片描述
再看一下留在列表中的有多少数字:
在这里插入图片描述
这里我们加入m,n来看一下它具体运行了几次循环

print('删除前:',x)
m=0
n =0
for i in x:
    n=n+1
    if i == 1:
        x.remove(i)
        m=m+1
     

print('删除后:', x)
print('m=',m)
print('n=',n)

在这里插入图片描述
可以看到,一共运行了75次循环,去除了25个1,在这里我也尝试了将1,2的位置换以下,但结果却没变,这可能与for循环,或者remove的内部构造有关,我们下次再谈。
好了,今天我们通过一个运用remove的具体例子引出了在for循环中运用remove函数存在的问题,并对其有一个浅显的认知。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值