关于Python列表和元组的问题?

偶然看到类似于这样的代码:

l = []
for i in range(10):
    l += i,

刚看到这段代码的时候很好奇,难道还可以这样写?

后来反应过来 i, 相当于一个元组 (i,)

但是列表可以和元组相加吗?

我进行了这样的测试:

>>> l = [0]
>>> t = (1,)
>>> l + t
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "tuple") to list
>>> l += t
>>> l
[0, 1]
>>>

所以, 为什么 + 会出错, 而 += 没有问题呢?

阅读 2.1k
1 个回答

https://docs.python.org/2/lib...

l + t 对应的是 l.__add__(t) ,而 l += t 对应的是 l.__iadd__(t) ,实现可以是不同的。

另外,你偶然看到的那段代码,如果不是用来说明 __iadd__ 或者讲解其它语法层面的东西,而是业务系统中用的话,就是坨屎。

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