假设我有一个这样的列表:
list = ['book', 'pen']
现在如果我们想用 .append() 添加一些东西到列表中,那么我们写:
list.append('pencil')
但是当我们使用.extend时,我们会写:
list.extend(['pencil', 'eraser'])
为什么 .extend() 里面有这个额外的“[]”?
追加内“[]”背后的逻辑原因是什么?
首先,不要将变量命名为
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', '!']
所以要小心,它们是不同的方法,做不同的事情,因此它们需要不同的参数。