我已经看到,在Python中有两种(也许更多)方法可以连接列表:一种方法是使用extend()方法:
a = [1, 2]
b = [2, 3]
b.extend(a)
另一个使用加号(+)运算符:
b += a
现在我想知道:这两个选项中哪一个是列表连接的“pythonic”方式,两个之间有什么不同(我已经查找了官方的Python教程,但是找不到任何关于这个主题的东西)。
发布于 2010-09-07 01:45:11
字节码级别上的唯一区别是.extend
方式涉及函数调用,这在Python中比在INPLACE_ADD
中稍微昂贵一些。
这真的没什么好担心的,除非你要执行这个操作数十亿次。然而,瓶颈很可能在其他地方。
发布于 2016-06-11 18:53:55
你可以链接函数调用,但是你不能直接+=函数调用:
class A:
def __init__(self):
self.listFoo = [1, 2]
self.listBar = [3, 4]
def get_list(self, which):
if which == "Foo":
return self.listFoo
return self.listBar
a = A()
other_list = [5, 6]
a.get_list("Foo").extend(other_list)
a.get_list("Foo") += other_list #SyntaxError: can't assign to function call
发布于 2016-11-02 13:12:43
我想说的是与numpy有一些不同(我刚刚看到问题问的是连接两个列表,而不是numpy数组,但由于这可能是像我这样的初学者的问题,我希望这能帮助那些寻求这篇文章的解决方案的人)。
import numpy as np
a = np.zeros((4,4,4))
b = []
b += a
它将返回错误
ValueError:操作数无法与形状(0,) (4,4,4)一起广播
b.extend(a)
完美工作
https://stackoverflow.com/questions/3653298
复制相似问题