【发布时间】:2021-01-03 05:05:05
【问题描述】:
我有一个这样的列表:
numlist = [1,2,3]
但是,我知道我不能这样做:numlist += 1。
因为它会引发TypeError: 'int' object is not iterable。
我必须这样做numlist += 1,So it will make a tuple。
但是为什么呢?:
>>> numlist = [1,2,3]
>>> numlist += 1,
>>> numlist
[1, 2, 3, 1]
不报错。
我的问题
我是用变量做的,但如果我这样做:
[1,2,3] + 1,
我明白了
TypeError: can only concatenate list (not "int") to list
为什么如果我执行list + 1, 会出错,但如果我执行variablecontainslist += 1, 则不会出错?
还有,
[1,2,3] + (1,)
给予
TypeError: can only concatenate list (not "tuple") to list
【问题讨论】:
-
这是因为
+的优先级高于,而+=的优先级较低。 -
那是因为你试图将元组添加/连接到列表中,这是不允许的。
-
另外,来自文档:“对于列表,iadd 相当于在列表上调用扩展并返回列表。这就是为什么我们说对于列表,+= 是list.extend 的“简写”
-
结束@Rysicin 的想法-
.extend接受任何可迭代的,而不仅仅是其他列表。 -
@ppwater 我只想指出,所有关于优先级的讨论都不相关,但你可能已经收集到了。
标签: python