python中用于列表操作的plus和append有啥区别? [复制]

Posted

技术标签:

【中文标题】python中用于列表操作的plus和append有啥区别? [复制]【英文标题】:What's the difference between plus and append in python for list manipulation? [duplicate]python中用于列表操作的plus和append有什么区别? [复制] 【发布时间】:2012-06-26 00:17:06 【问题描述】:

可能重复:Python append() vs. + operator on lists, why do these give different results?

在 Python 中用于列表操作的“+”和“附加”之间的实际区别是什么?

【问题讨论】:

【参考方案1】:

有两个主要区别。首先是+的含义更接近extend而不是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 实际上就像+= - 事实上,它与+= 具有完全相同的行为,除了它可以接受任何可迭代的,而+= 只能取另一个列表。

【讨论】:

这在 2019 年使用 Python3 仍然准确吗?【参考方案2】:

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

【讨论】:

+1,这很重要,因为列表是可变的。使用+ 创建一个新列表而不更改原始列表,您应该知道您是否打算更改原始列表。【参考方案3】:
>>> 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]

【讨论】:

【参考方案4】:

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

附:你是说extend吗?

【讨论】:

【参考方案5】:

+ 操作将数组元素添加到原始数组中。 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, why do these give different results?

【讨论】:

以上是关于python中用于列表操作的plus和append有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python 3.6 列表元组操作小结

Python列表操作

Python,明明只append了一次,为啥所有子列表都变了啊.jpg

Python基础--列表

python append()函数

python列表和元组的方法