Python中切片操作的运行时

Python中切片操作的运行时,python,Python,我试图理解切片在Python中是如何工作的。如果我做了类似的事情 arr = [1,2,3,4,5] arr[0:n] = [9]*n 当n是某个整数时,拼接操作的运行时间是多少?这是以O(n)运行,还是以某种方式切片是恒定时间 你应该试试IPython笔记本电脑,它的%%timeit magic让计时变得简单。我想我明白你想做什么,所以我把500个元素的列表切成了片,而5000个元素的列表是500个元素。这就是你的想法吗 除非我的分析是错误的,否则这看起来是N阶?这不可能是常数。表达式[9

我试图理解切片在Python中是如何工作的。如果我做了类似的事情

arr = [1,2,3,4,5]
arr[0:n] = [9]*n

当n是某个整数时,拼接操作的运行时间是多少?这是以O(n)运行,还是以某种方式切片是恒定时间

你应该试试IPython笔记本电脑,它的
%%timeit magic
让计时变得简单。我想我明白你想做什么,所以我把500个元素的列表切成了片,而5000个元素的列表是500个元素。这就是你的想法吗


除非我的分析是错误的,否则这看起来是N阶?

这不可能是常数。表达式
[9]*n
本身在空间上是线性的,因此在时间上也是线性的。

所有这些都是将9乘以
n
,然后引发一个异常,因此它的运行时间是恒定的。@ChrisMartin非常有趣,感谢您指出这一点。编辑。你的分析是错误的。您正在定时创建
arr
,而不仅仅是替换n个元素。(也就是说,两者都是O(n))谢谢,我会更正它,但OP应该能够在笔记本中使用%%timeit轻松完成这项工作。