列表切片和直接分配列表之间的区别?
问题描述:
我一直在想,如果有任何差异之间的“幕后”:列表切片和直接分配列表之间的区别?
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