python列表删除多个元素_python-删除列表中前N个元素的最有效方法?

本文探讨了Python列表操作中的效率问题,尤其是从列表开头删除元素。建议使用`collections.deque`替代标准列表,因为`deque`的`popleft()`方法在删除开头元素时表现出更好的性能。对于大量删除操作,`del mylist[:n]`也是一个快速的选择。通过实例比较,显示`deque`在处理头部操作时的显著优势。
摘要由CSDN通过智能技术生成

Python列表并未在列表的开头进行操作,并且在此操作中非常无效。

虽然你可以写

mylist = [1, 2 ,3 ,4]

mylist.pop(0)

这是非常低效的。

如果只想从列表中删除项目,则可以使用popleft()进行以下操作:

del mylist[:n]

这也真的很快:

In [34]: %%timeit

help=range(10000)

while help:

del help[:1000]

....:

10000 loops, best of 3: 161 µs per loop

如果需要从列表的开头获取元素,则应使用Raymond Hettinger的popleft()及其popleft()方法。

from collections import deque

deque(['f', 'g', 'h', 'i', 'j'])

>>> d.pop() # return and remove the rightmost item

'j'

>>> d.popleft() # return and remove the leftmost item

'f'

一个对比:

清单+弹出(0)

In [30]: %%timeit

....: help=range(10000)

....: while help:

....: help.pop(0)

....:

100 loops, best of 3: 17.9 ms per loop

deque + popleft()

In [33]: %%timeit

help=deque(range(10000))

while help:

help.popleft()

....:

1000 loops, best of 3: 812 µs per loop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值