Python列表方法append和extend的区别

Python列表方法append和extend的区别

技术背景

在Python编程中,列表(list)是一种常用的数据结构,用于存储一系列元素。append()extend() 是列表对象提供的两个重要方法,它们都可以用于向列表中添加元素,但在功能和使用场景上有所不同。理解它们的区别对于高效地操作列表非常重要。

实现步骤

append()方法

append() 方法用于在列表的末尾添加一个元素。这个元素可以是任意类型的对象,如数字、字符串、列表等。添加后,列表的长度会增加1。
示例代码如下:

1
2
3
x = [1, 2, 3]
x.append([4, 5])
print(x) # 输出: [1, 2, 3, [4, 5]]

extend()方法

extend() 方法用于将一个可迭代对象(如列表、元组、字符串等)中的元素逐个添加到列表的末尾。添加后,列表的长度会增加可迭代对象中元素的数量。
示例代码如下:

1
2
3
x = [1, 2, 3]
x.extend([4, 5])
print(x) # 输出: [1, 2, 3, 4, 5]

核心代码

append()方法示例

1
2
3
4
5
6
7
my_list = ['foo', 'bar']
my_list.append('baz')
print(my_list) # 输出: ['foo', 'bar', 'baz']

another_list = [1, 2, 3]
my_list.append(another_list)
print(my_list) # 输出: ['foo', 'bar', 'baz', [1, 2, 3]]

extend()方法示例

1
2
3
4
5
6
7
my_list = ['foo', 'bar']
another_list = [1, 2, 3]
my_list.extend(another_list)
print(my_list) # 输出: ['foo', 'bar', 1, 2, 3]

my_list.extend('baz')
print(my_list) # 输出: ['foo', 'bar', 1, 2, 3, 'b', 'a', 'z']

最佳实践

添加单个元素

如果只需要向列表中添加一个元素,建议使用 append() 方法,因为它的语义更清晰,代码更简洁。

1
2
3
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 输出: [1, 2, 3, 4]

添加多个元素

如果需要向列表中添加多个元素,建议使用 extend() 方法,因为它的性能更高。

1
2
3
4
my_list = [1, 2, 3]
new_elements = [4, 5, 6]
my_list.extend(new_elements)
print(my_list) # 输出: [1, 2, 3, 4, 5, 6]

常见问题

append()和extend()的性能比较

append() 方法的时间复杂度是O(1)(均摊),extend() 方法的时间复杂度是O(k),其中k是可迭代对象的长度。当需要添加多个元素时,使用 extend() 方法通常比多次调用 append() 方法更快,因为 extend() 方法的迭代是在C语言层面实现的。
示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
import timeit

def append(alist, iterable):
for item in iterable:
alist.append(item)

def extend(alist, iterable):
alist.extend(iterable)

print(min(timeit.repeat(lambda: append([], "abcdefghijklmnopqrstuvwxyz"))))
print(min(timeit.repeat(lambda: extend([], "abcdefghijklmnopqrstuvwxyz"))))

与运算符 ++= 的区别

+ 运算符会创建一个新的列表,而 += 运算符和 extend() 方法类似,会在原列表上进行修改。

1
2
3
4
5
6
7
l1 = [1, 2, 3]
l2 = [4, 5]
l3 = l1 + l2 # 创建一个新的列表
print(l3) # 输出: [1, 2, 3, 4, 5]

l1 += l2 # 在原列表上进行修改
print(l1) # 输出: [1, 2, 3, 4, 5]

当可迭代对象不是列表时的处理

extend() 方法可以接受任何可迭代对象作为参数,而 append() 方法会将参数作为一个整体添加到列表中。

1
2
3
4
5
6
7
my_list = [1, 2]
my_list.append('abc')
print(my_list) # 输出: [1, 2, 'abc']

my_list = [1, 2]
my_list.extend('abc')
print(my_list) # 输出: [1, 2, 'a', 'b', 'c']

Python列表方法append和extend的区别
https://119291.xyz/posts/2025-04-14.difference-between-python-append-and-extend/
作者
ww
发布于
2025年4月14日
许可协议