为什么Python的.append()里面需要多写一个[]? [已关闭]

问题描述 投票:0回答:1

假设我有一个这样的列表:

list = ['book', 'pen']

现在如果我们想用 .append() 添加一些东西到列表中,那么我们写:

list.append('pencil')

但是当我们使用.extend时,我们会写:

list.extend(['pencil', 'eraser'])

为什么 .extend() 里面有这个额外的“[]”?

追加内“[]”背后的逻辑原因是什么?

python append
1个回答
0
投票

首先,不要将变量命名为

list
,因为这是一个 内置 Python 类型,将变量命名为
list
会使该类型更难以访问。

.append()
方法向列表添加一个新元素:

>>> my_list = ["a", "b", "c"]
>>> my_list.append("d")
>>> print(my_list)
['a', 'b', 'c', 'd']

并且

.extend()
将多个元素添加到列表中:

>>> my_list = ["a"]
>>> my_list.extend(["b", "c", "d"])
>>> print(my_list)
['a', 'b', 'c', 'd']

如果我在这里使用

.append()
,会发生意想不到的事情:

>>> my_list = ["a"]
>>> my_list.append(["b", "c", "d"])
>>> print(my_list)
['a', ['b', 'c', 'd']]

事实是,除了

.extend()
,你还可以使用这样的东西:

>>> my_list = ["a"]
>>> for element in ["b", "c", "d"]:
...   my_list.append(element)
... 
>>> print(my_list)
['a', 'b', 'c', 'd']

那么,为什么在

[]
中需要
.extend()
?该函数需要一个可迭代对象(这是一种对象,列表是可迭代对象)。方括号用于创建列表,但还有更多可迭代的对象类型,例如字符串。想象一下这个例子:

>>> my_list = ["Hello"]
>>> my_list.append("World!")
>>> print(my_list)
['Hello', 'World!']

但是如果你使用

.extend()
而不是
.append()
,你会得到别的东西:

>>> my_list = ["Hello"]
>>> my_list.extend("World!")
>>> print(my_list)
['Hello', 'W', 'o', 'r', 'l', 'd', '!']

所以要小心,它们是不同的方法,做不同的事情,因此它们需要不同的参数。

© www.soinside.com 2019 - 2024. All rights reserved.