pythonlist删除元素速度慢_python列表删除元素三个⽅法的效
率对⽐#⼩⽩学py。。。
⼩⽩⼀枚,有错请指正,勿喷
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()
js split怎么用a=list(range(100000))
for i in range(100000,0,-1):
oracle 左连接del a[i-1]
u8提示msdtc不可用怎么办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):
java哪里下载jdka.pop()
time2=time.time()
print('{0}⽤时:{1}'.format('pop⽅法',time2-time1))
print()
print()
print('{0:=^20}'.format('remove⽅法'))
time1=time.time()
c语音难吗a=list(range(100000))
for i in range(100000):
time2=time.time()小白学python买什么书
print('{0}⽤时:{1}'.format('remove⽅法',time2-time1)) While True:
learn()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论