为什么Python列表有一个extend方法?

nig*_*222 0 python list

什么a_list.extend(list2)做(或做得更好)a_list += list2没有?

这一切都是真的,除了观察如果.extend()返回扩展列表它将是一个答案,所以你可以级联另一个方法.但事实并非如此,所以你不能.

Mar*_*ers 10

list.extend()是一个表达式,可以嵌入更大的表达式中.+=(扩充赋值)是一个语句,语句永远不能嵌入表达式中.

所以你可以这样做:

doubled_extender = lambda l, it: l.extend(v for v in it for _ in range(2))
Run Code Online (Sandbox Code Playgroud)

但你不能+=在那里使用.

请注意,对于list对象的object.__iadd__()特殊方法+=使用,调用list.extend()直接返回之前self.

最后但并非最不重要的是,增强分配功能后来添加到语言中list.extend().