2015-11-05 118 views
3

我一直在想,如果有任何差異之間的「幕後」:列表切片和直接分配列表之間的區別?

a=[1,2,3] 
a[0], a[1], a[2] = a[2], a[1], a[0] 

和:

a = [1,2,3] 
a[0:2] = a[2::-1] 

這兩種改變內存中的原始名單,而據我可以告訴做同樣的事情,但我一直在想,例如,第一個是更高的內存效率,因爲它不需要創建切片對象或類似的東西。

回答

3

列表索引和切片的複雜性是O(N),而當您使用多重索引時,實際上您使用了O(N)順序的多個腳本。雖然您可以使用切片一步完成此操作,但使用切片比多重索引更直接優雅。

因此,最好使用更加pythonic而不是索引的切片。

a[0:2] = a[2::-1] 
+0

我明白了。使用的內存是否也有差異?或者是相同的,只是運行時間更好? – Nescio

+1

@Nescio不,因爲每個索引只是切片和索引中的一個指針,所以您正在處理引用。 – Kasramvd

+0

明白了。謝謝! – Nescio

相關問題