列表方法append()和extend()之间有什么区别?


当前回答

append附加一个元素。extend附加元素列表。

请注意,如果您传递一个列表进行追加,它仍然会添加一个元素:

>>> a = [1, 2, 3]
>>> a.append([4, 5, 6])
>>> a
[1, 2, 3, [4, 5, 6]]

其他回答

append(object)通过将对象添加到列表来更新列表。

x = [20]
# List passed to the append(object) method is treated as a single object.
x.append([21, 22, 23])
# Hence the resultant list length will be 2
print(x)
--> [20, [21, 22, 23]]

extend(list)本质上连接两个列表。

x = [20]
# The parameter passed to extend(list) method is treated as a list.
# Eventually it is two lists being concatenated.
x.extend([21, 22, 23])
# Here the resultant list's length is 4
print(x)
--> [20, 21, 22, 23]

extend(L)通过附加给定列表L中的所有项目来扩展列表。

>>> a
[1, 2, 3]
a.extend([4])  #is eqivalent of a[len(a):] = [4]
>>> a
[1, 2, 3, 4]
a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> a[len(a):] = [4]
>>> a
[1, 2, 3, 4]

有一个有趣的点已经被暗示,但没有解释,那就是扩展比追加更快。对于任何内部有append的循环,都应该考虑用list.exextend(processed_elements)替换。

记住,附加新元素可能会导致整个列表重新分配到内存中更好的位置。如果因为一次添加一个元素而多次执行此操作,则会影响整体性能。在这个意义上,list.extend类似于“”.jjoin(stringlist)。

您可以使用“+”返回扩展,而不是就地扩展。

l1=range(10)

l1+[11]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11]

l2=range(10,1,-1)

l1+l2

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2]

类似地,+=表示就地行为,但与append&extend略有不同。+=与append和extend的最大区别之一是在函数作用域中使用时,请参阅本文。

英语词典将单词append和extend定义为:

追加:在书面文档的末尾添加(某物)。扩展:放大。放大或展开


有了这些知识,现在让我们了解

1) append和extend之间的区别

附加:

将任何Python对象原样追加到列表末尾(即列表中的最后一个元素)。结果列表可以是嵌套的,并且包含异构元素(即列表、字符串、元组、字典、集合等)

扩展:

接受任何可迭代的作为其参数,并使列表更大。结果列表始终是一维列表(即无嵌套),并且由于应用列表(可迭代),它可能包含异类元素(例如字符、整数、浮点)。

2) 追加和扩展之间的相似性

两者都只接受一个论点。两者都会就地修改列表。结果,两者都返回None。


实例

lis = [1, 2, 3]

# 'extend' is equivalent to this
lis = lis + list(iterable)

# 'append' simply appends its argument as the last element to the list
# as long as the argument is a valid Python object
list.append(object)