Python 的 append() 与列表的 = 运算符:为什么结果不同?
append() 方法之间的明显差异当与列表一起使用时 = 运算符可能会令人困惑。为了阐明这种差异,让我们深入研究这些操作的底层机制。
= 运算符
当 = 运算符应用于列表时,它会有效地附加列表位于原始列表的右侧。但是,此操作不会创建新的列表对象;而是创建新的列表对象。相反,它会就地修改现有列表。
append() 方法
相反,append() 方法显式地将作为参数提供的对象插入到原始列表的末尾。此插入导致对存储在原始列表的最后一个元素中的同一列表实例的引用。因此,在列表上递归调用append()会导致无限循环。
清晰的说明
考虑以下代码片段:
<code class="python">c = [1, 2, 3] c += c print(c) # Output: [1, 2, 3, 1, 2, 3]</code>
在此示例中,= 运算符将 c 的元素(即 [1, 2, 3])附加到 c,有效地将其长度加倍。
现在,让我们稍微修改一下代码:
<code class="python">c = [1, 2, 3] c.append(c) print(c) # Output: [1, 2, 3, [...]]</code>
这里,append() 方法插入整个列表 c 作为最后一个元素。此递归会导致无限循环,因为 c[-1] 变得与 c 本身相同。
另一种方法
如果您的目的是连接列表,您可以使用extend()方法而不是=运算符。与 一样,extend() 方法将另一个列表(或可迭代)的元素追加到原始列表,从而就地修改它。
结论
The append() 和 = 运算符之间的主要区别在于它们各自的行为。 = 运算符将右侧列表的元素连接到原始列表,而append() 将列表本身作为最后一个元素插入,从而导致递归循环。
以上是为什么 Python 的 `=` 运算符和 `append()` 方法在处理列表时会产生不同的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!