当a是列表时,a + = number和a + = number之间有什么区别(带尾随逗号)?

yuh*_*ngd 5 python tuples list extend

我正在阅读一段Python代码,有一件事我无法理解.a是一个列表,num是一个整数

a += num,
Run Code Online (Sandbox Code Playgroud)

工作,但

a += num 
Run Code Online (Sandbox Code Playgroud)

不行.任何人都可以向我解释这个吗?

tim*_*geb 4

首先,重要的是要注意这里的工作方式与本例a += 1,不同。a = a + 1,a = a + 1,a = a + (1,)都抛出 aTypeError因为你不能连接列表和元组,但你可以用元组扩展列表。)

+=调用列表__iadd__方法,该方法调用list.extend然后返回原始列表本身。

1,是一个长度为 1 的元组,所以你要做的是

>>> a = []
>>> a.extend((1,))
>>> a
[1]
Run Code Online (Sandbox Code Playgroud)

由于一个元组的长度,这看起来很奇怪。但它的工作原理就像用任意长度的元组扩展列表一样:

>>> a.extend((2,3,4))
>>> a
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)