2014-11-04 47 views
2

片操作我想了解如何在Python切片的作品。如果我做类似运行在Python

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

什么是splice操作的运行时间,其中n是某个整数?这是否在O(n)中运行,或者以某种方式持续时间切片?

+0

这一切确实是'N'乘以9,然后抛出一个异常,所以它的运行时间是恒定的。 – 2014-11-04 01:19:44

+0

@ChrisMartin非常有趣,谢谢指出这一点。编辑。 – Apollo 2014-11-04 01:31:14

回答

0

你应该尝试IPython的笔记本电脑,它的​​这使得定时事情变得简单。我想我明白你想要做什么,所以我将500个元素列表与500个元素列表进行了切片。这是你在想什么?

enter image description here

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

+0

您的分析错误。您正在计划创建'arr',而不仅仅是替换其中的n个元素。 (之所以这么说,都是O(n))的 – 2014-11-04 02:46:06

+0

谢谢,我会纠正,但OP应该能够与笔记本%% timeit平凡做到这一点。 – 2014-11-04 16:12:58

0

没有办法这是不变的。单独表达式[9]*n在空间上是线性的,因此也是时间上的。