16

可能重复:
列表上的 Python append() 与 + 运算符,为什么这些会给出不同的结果?

Python中列表操作的“+”和“append”之间的实际区别是什么?

4

5 回答 5

26

有两个主要区别。第一个是+在含义上extend比 to更接近append

>>> a = [1, 2, 3]
>>> a + 4
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    a + 4
TypeError: can only concatenate list (not "int") to list
>>> a + [4]
[1, 2, 3, 4]
>>> a.append([4])
>>> a
[1, 2, 3, [4]]
>>> a.extend([4])
>>> a
[1, 2, 3, [4], 4]

另一个更突出的区别是方法就地工作:extend实际上就像+=- 事实上,它具有完全相同的行为,+=只是它可以接受任何可迭代的,而+=只能接受另一个列表。

于 2012-06-24T12:51:33.167 回答
18

使用list.append修改列表 - 它的结果是None. 使用 + 创建一个新列表。

于 2012-06-24T12:48:14.640 回答
4
>>> L1 = [1,2,3]
>>> L2 = [97,98,99]
>>>
>>> # Mutate L1 by appending more values:
>>> L1.append(4)
>>> L1
[1, 2, 3, 4]
>>>
>>> # Create a new list by adding L1 and L2 together
>>> L1 + L2
[1, 2, 3, 4, 97, 98, 99]
>>> # L1 and L2 are unchanged
>>> L1
[1, 2, 3, 4]
>>> L2
[97, 98, 99]
>>>
>>> # Mutate L2 by adding new values to it:
>>> L2 += [999]
>>> L2
[97, 98, 99, 999]
于 2012-06-24T12:49:43.143 回答
0

+操作将数组元素添加到原始数组。该 array.append操作将数组(或任何对象)插入到原始数组的末尾。

[1, 2, 3] + [4, 5, 6] // [1, 2, 3, 4, 5, 6]

b = [1, 2, 3]
b.append([4, 5, 6]) // [1, 2, 3, [4, 5, 6]]

看看这里:Python append() vs. + operator on lists,为什么这些会给出不同的结果?

于 2012-06-24T12:48:05.593 回答
0

+是一个二元运算符,它产生一个由两个操作数列表串联产生的新列表。append是将单个元素附加到现有列表的实例方法。

PS你的意思是extend

于 2012-06-24T12:48:35.190 回答