Python切片设置不是O(n + k)?

时间:2017-12-23 03:50:38

标签: python time-complexity

以下两个陈述大致在同一时间运行,我不明白为什么。 第一个将长度为1的新切片插入长度为100的列表中。 第二个将长度为1的新切片插入到长度为10000的列表中,并且在我的PC上只花费23%的时间。

timeit.timeit(stmt = 'test[10:10] = [-1]', setup = 'test = [i for i in 
range(100)]', number = 100000)
timeit.timeit(stmt = 'test[10:10] = [-1]', setup = 'test = [i for i in 
range(10000)]', number = 100000)

Python wiki' s Time Complexity page表示切片设置的复杂性为O(n + k),其中k是切片的长度,n是列表的长度。这对我来说很有意义 - 必须移动插入切片后的所有内容。所以我希望第二个声明要花费100倍的时间。

当列表更长(一百万个整数)时,行为与我预期的n更接近线性。 那么使短列表切片设置仅微弱地依赖于n?

正在发生什么

0 个答案:

没有答案