切片和性能



这可能是我不太理解切片。我想把一个列表从一个特定的索引添加到另一个列表。我很好奇,因为我读到过,如果你切一个列表,你会做一个(深)拷贝。下面哪一种方法更快?

方法1

new_lst += old_lst[i:]

方法2

while i < len(old_lst):
new_list.append(old_lst[i])
i += 1

while循环将多次调用append,这会产生函数开销。另一方面,[:](浅复制)将在一次调用中复制您的数组。然而,如果你的元素不是字面量(例如,如果它们是一个列表),那么你最终会意外地在列表之间共享指针。如果你真的想深度复制,那么使用from copy import deepcopy来深度复制你的iterable。

最新更新