从列表队列中删除一些项目的快速方法

从列表队列中删除一些项目的快速方法,第1张

列表/队列中删除一些项目的快速方法

列表理解是渐近最优解:

somelist = [x for x in somelist if not determine(x)]

它只对列表进行一次传递,因此运行时间为O(n)。由于您需要在每个对象上调用define(),因此任何算法都至少需要O(n)个 *** 作。列表理解确实需要进行一些复制,但是它只是复制对对象的引用,而不是复制对象本身。

从Python中的列表中删除项目为O(n),因此循环内带有remove,pop或del的所有内容均为O(n ** 2)。

另外,在CPython列表中,理解要比for循环快。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5650008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存