以下两个陈述大致在同一时间运行,我不明白为什么。 第一个将长度为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?
正在发生什么