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]
這兩種改變內存中的原始名單,而據我可以告訴做同樣的事情,但我一直在想,例如,第一個是更高的內存效率,因爲它不需要創建切片對象或類似的東西。
我一直在想,如果有任何差異之間的「幕後」:列表切片和直接分配列表之間的區別?
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]
這兩種改變內存中的原始名單,而據我可以告訴做同樣的事情,但我一直在想,例如,第一個是更高的內存效率,因爲它不需要創建切片對象或類似的東西。
列表索引和切片的複雜性是O(N),而當您使用多重索引時,實際上您使用了O(N)順序的多個腳本。雖然您可以使用切片一步完成此操作,但使用切片比多重索引更直接優雅。
因此,最好使用更加pythonic而不是索引的切片。
a[0:2] = a[2::-1]
我明白了。使用的內存是否也有差異?或者是相同的,只是運行時間更好? – Nescio
@Nescio不,因爲每個索引只是切片和索引中的一個指針,所以您正在處理引用。 – Kasramvd
明白了。謝謝! – Nescio