列表方法append()和extend()之间有什么区别?


当前回答

append将元素添加到列表中。extend将第一个列表与另一个列表/可迭代列表连接起来。

>>> xs = ['A', 'B']
>>> xs
['A', 'B']

>>> xs.append("D")
>>> xs
['A', 'B', 'D']

>>> xs.append(["E", "F"])
>>> xs
['A', 'B', 'D', ['E', 'F']]

>>> xs.insert(2, "C")
>>> xs
['A', 'B', 'C', 'D', ['E', 'F']]

>>> xs.extend(["G", "H"])
>>> xs
['A', 'B', 'C', 'D', ['E', 'F'], 'G', 'H']

其他回答

append附加一个元素。extend附加元素列表。

请注意,如果您传递一个列表进行追加,它仍然会添加一个元素:

>>> a = [1, 2, 3]
>>> a.append([4, 5, 6])
>>> a
[1, 2, 3, [4, 5, 6]]

append将元素添加到列表中。extend将第一个列表与另一个列表/可迭代列表连接起来。

>>> xs = ['A', 'B']
>>> xs
['A', 'B']

>>> xs.append("D")
>>> xs
['A', 'B', 'D']

>>> xs.append(["E", "F"])
>>> xs
['A', 'B', 'D', ['E', 'F']]

>>> xs.insert(2, "C")
>>> xs
['A', 'B', 'C', 'D', ['E', 'F']]

>>> xs.extend(["G", "H"])
>>> xs
['A', 'B', 'C', 'D', ['E', 'F'], 'G', 'H']

我希望我能对这个问题做一个有益的补充。如果您的列表存储了一个特定类型的对象,例如Info,这里有一种情况是extend方法不适合的:在for循环中,每次生成一个Info对象并使用extend将其存储到列表中,它将失败。例外情况如下:

TypeError:“Info”对象不可迭代

但如果使用append方法,结果是可以的。因为每次使用extend方法时,它都会将其视为列表或任何其他集合类型,对其进行迭代,并将其放在上一个列表之后。显然,特定的对象无法迭代。

append在列表末尾附加指定的对象:

>>> x = [1, 2, 3]
>>> x.append([4, 5])
>>> print(x)
[1, 2, 3, [4, 5]]

extend通过从指定的iterable中附加元素来扩展列表:

>>> x = [1, 2, 3]
>>> x.extend([4, 5])
>>> print(x)
[1, 2, 3, 4, 5]

这相当于使用+运算符进行追加和扩展:

>>> x = [1,2,3]
>>> x
[1, 2, 3]
>>> x = x + [4,5,6] # Extend
>>> x
[1, 2, 3, 4, 5, 6]
>>> x = x + [[7,8]] # Append
>>> x
[1, 2, 3, 4, 5, 6, [7, 8]]