python删除列表元素_python列表删除元素三个方法的效率对比#小白学python笔记#

14fe9f0851ec08641c57dd16827e0ae5.png

小白一枚,有错请指正,勿喷

python列表删除元素的三个方法:del、pop、remove用法和区别都看明白了,那么问题来了,到底怎么选,排除其他各种目的,我只从效率角度思考,所以写了一段无聊至极的代码(在列表、元组、字典里面,一边循环一遍删除是不对滴,这里只是为了测试效率),以比较三种方法效率高低,用中文来说是生成一个10万个元素的列表,分别用del、pop、remove三种方法把10万个元素逐个移除掉,记录耗时。

经过一轮不那么激烈的战斗,效率排序如下:pop>del>remove。

思考:

1.pop和del都是通过列表索引操作的,比remove通过找元素的方式来说,效率高的不是一个水平级别,remove绝对完败

2.pop和del两个的差距不是特别明显,(当然再放大数量等级会更明显,为了迁就remove只能采用10万测试),稍稍理解一下,pop在默认参数情况下,直接从列表尾巴移除,我已经特意把del的删除顺序,按索引从大到小的排序进行(即从尾巴开始移除),如果是从列表开头开始删除,还涉及大量拷贝应该会更慢。

3.pop和del还有一个差异,pop是不生成新对象的,del每次循环生成一个新对象,因此也造成效率降低。

从代码效率角度出发,应该注意以下方面:

1.尽量用“索引”而不是“值”进行操作

2.尽量避免生成新对象,一旦循环次数增加,增加新对象会造成效率下降

3.尽量在列表尾巴进行操作,不要从中间操作,元组、字典同理

代码如下,如有兴趣可以复制ide试试

import time

print('{0:=^20}'.format('del方法'))

time1=time.time()

a=list(range(100000))

for i in range(100000,0,-1):

del a[i-1]

time2=time.time()

print('{0}用时:{1}'.format('del方法',time2-time1))

print()

print()

print('{0:=^20}'.format('pop方法'))

time1=time.time()

a=list(range(100000))

for i in range(100000):

a.pop()

time2=time.time()

print('{0}用时:{1}'.format('pop方法',time2-time1))

print()

print()

print('{0:=^20}'.format('remove方法'))

time1=time.time()

a=list(range(100000))

for i in range(100000):

a.remove(i)

time2=time.time()

print('{0}用时:{1}'.format('remove方法',time2-time1))


While True:

learn()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值