【发布时间】:2016-12-24 03:33:18
【问题描述】:
a_list.extend(list2) 做了哪些(或做得更好)而 a_list += list2 没有做的事情?
真的是这样,除了观察到如果.extend() 返回扩展列表,这将是一个答案,因此您可以级联另一个方法。但它没有,所以你不能。
【问题讨论】:
-
+=是 a) 后来添加到语言中 b) 列表作为list.extend()调用实现。 -
啊——没想到历史。谢谢。我认为
a_list = a_list + list2会导致制作列表副本,因此效率相对低下,这是否正确?还有为什么投反对票? -
是的,连接会创建一个新的列表对象。
-
更多关于这两种方式的信息:stackoverflow.com/questions/3653298/…
-
a_list = a_list + list2创建一个新列表并将其绑定到名称a_list,替换原始列表对象。 OTOH,a_list[:] = a_list + list2将新列表复制回绑定到a_list名称的原始列表对象。如果其他对象持有对a_list的引用并且您希望它们反映您对a_list所做的任何更改,这将很有用,但是这比简单的a_list = a_list + list2慢一点。