关于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.4k
1 个回答

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

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

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

推荐问题