2014-11-04 55 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在空間上是線性的,因此也是時間上的。