首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >连接两个列表- '+=‘和extend()之间的差异

连接两个列表- '+=‘和extend()之间的差异
EN

Stack Overflow用户
提问于 2010-09-07 01:35:51
回答 8查看 82.2K关注 0票数 290

我已经看到,在Python中有两种(也许更多)方法可以连接列表:一种方法是使用extend()方法:

a = [1, 2]
b = [2, 3]
b.extend(a)

另一个使用加号(+)运算符:

b += a

现在我想知道:这两个选项中哪一个是列表连接的“pythonic”方式,两个之间有什么不同(我已经查找了官方的Python教程,但是找不到任何关于这个主题的东西)。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-09-07 01:45:11

字节码级别上的唯一区别是.extend方式涉及函数调用,这在Python中比在INPLACE_ADD中稍微昂贵一些。

这真的没什么好担心的,除非你要执行这个操作数十亿次。然而,瓶颈很可能在其他地方。

票数 264
EN

Stack Overflow用户

发布于 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
票数 59
EN

Stack Overflow用户

发布于 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)完美工作

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3653298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档