python - python的列表切片效率如何?
问题描述
我想知道在 python 中切片列表的效率是多少?
例如:
myList = [1, 2, 3, 4, 5]
newList = myList[1:4]
我正在寻找大 O 表示法(例如O(n)
)。
解决方案
它O(n)
适用于list
s 和大多数序列类型,因为大多数类型的切片执行浅拷贝,它不会生成原始数据的视图。
对于某些类型,如memoryview
,或第三方类型,如numpy
数组,切片生成视图,而不是副本,因此成本为O(1)
,因为无论视图大小如何,构建视图的成本都是相同的。不利的一面是,这可以使大量分配保持活动状态,因为单个视图存在于分配的一小部分上;这个缺陷是大多数内置类型使用复制策略而不是视图策略的原因。
推荐阅读
- swift - SkScene 未显示所有子节点和不正确的节点数
- c# - 如何从泛型类的方法中调用类 T 的非泛型方法?
- blockchain - 智能合约可以访问其他区块链的数据吗?
- python - Python Dataframes:数据列被错误地读取为行索引,并且 reset_index() 产生错误的输出
- python - 如何在 sympy 中创建抽象的元素向量函数
- javascript - 未处理的拒绝(TypeError):无法读取未定义的属性“投票”
- javascript - 在 React.js 中拖动时如何更改光标 CSS
- java - 领域驱动设计 AggregateRoot 选择
- python - 安装和配置 GeoDjango 的问题
- sql-server - 在 Visual Studio (SQL Server) 中返回标识值