切片和性能
Slicing and performance
可能是我不太懂切片。
我想将一个列表从特定索引添加到另一个列表。我想知道,因为我读到如果你将一个列表切片,你就会制作它的(深)副本。下面哪种方法更快?
方法一
new_lst += old_lst[i:]
方法二
while i < len(old_lst):
new_list.append(old_lst[i])
i += 1
while
循环会多次调用 append,这会产生函数开销。另一方面,[:]
(浅拷贝)将在一次调用中复制您的数组。但是,如果您的元素不是文字(例如,如果它们是列表),那么您最终会意外地在列表之间共享指针。如果你真的想深拷贝,那么使用 from copy import deepcopy
将深拷贝你的迭代器。
可能是我不太懂切片。 我想将一个列表从特定索引添加到另一个列表。我想知道,因为我读到如果你将一个列表切片,你就会制作它的(深)副本。下面哪种方法更快?
方法一
new_lst += old_lst[i:]
方法二
while i < len(old_lst):
new_list.append(old_lst[i])
i += 1
while
循环会多次调用 append,这会产生函数开销。另一方面,[:]
(浅拷贝)将在一次调用中复制您的数组。但是,如果您的元素不是文字(例如,如果它们是列表),那么您最终会意外地在列表之间共享指针。如果你真的想深拷贝,那么使用 from copy import deepcopy
将深拷贝你的迭代器。