首页 > 解决方案 > python的列表切片效率如何?

问题描述

我想知道在 python 中切片列表的效率是多少?

例如:

myList = [1, 2, 3, 4, 5]
newList = myList[1:4]

我正在寻找大 O 表示法(例如O(n))。

标签: pythonbig-oslice

解决方案


O(n)适用于lists 和大多数序列类型,因为大多数类型的切片执行浅拷贝,它不会生成原始数据的视图。

对于某些类型,如memoryview,或第三方类型,如numpy数组,切片生成视图,而不是副本,因此成本为O(1),因为无论视图大小如何,构建视图的成本都是相同的。不利的一面是,这可以使大量分配保持活动状态,因为单个视图存在于分配的一小部分上;这个缺陷是大多数内置类型使用复制策略而不是视图策略的原因。


推荐阅读