在Python中 a+=b、 a=a+b 和a.extend(b)有什么区别?

新手上路,请多包涵

我看到一本书中介绍如果a实现了__iadd__方法 a.extend(b)

如果没有实现的话a+=b就会变得和a=a+b一样

这三者的关系是什么呢

阅读 2.1k
1 个回答

a, b 同为 list 时,效果是一样的,
但如果b是其他类型的可迭代对象:

In [16]: a = [1, 2]

In [17]: b = {3, 4}

In [18]: a + b
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-bd58363a63fc> in <module>
----> 1 a + b

TypeError: can only concatenate list (not "set") to list

In [19]: a += b

In [20]: a
Out[20]: [1, 2, 3, 4]

In [21]: a.extend(b)

In [22]: a
Out[22]: [1, 2, 3, 4, 3, 4]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题