2015-11-05 91 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

相关问题