Python 列表的 append() 和 extend() 有什么区别?

append 把整个对象作为单个元素加入列表末尾;extend 把可迭代对象的每个元素逐个加入。append([1,2]) 得到嵌套列表,extend([1,2]) 平铺展开。本文详解区别。

最佳实践
Python 列表的 append() 和 extend() 有什么区别?封面

核心区别:append(x) 把 x 整体当作一个元素加到末尾(x 是列表就变成嵌套);extend(iterable) 把可迭代对象逐个元素展开加入。

对比示例

fruits = ['apple', 'banana']

# append:列表作为一个元素加入
fruits.append(['grape', 'orange'])
print(fruits)  # ['apple', 'banana', ['grape', 'orange']]——3 个元素

# extend:列表被拆开逐个加入
fruits = ['apple', 'banana']
fruits.extend(['grape', 'orange'])
print(fruits)  # ['apple', 'banana', 'grape', 'orange']——4 个元素

等价的其他写法

# extend 的等价写法
fruits += ['grape', 'orange']
fruits = fruits + ['grape', 'orange']  # 创建新列表而非原地修改

常见踩坑

# 想合并两个列表却用了 append
a = [1, 2]
a.append([3, 4])
print(a)  # [1, 2, [3, 4]]——不是想要的 [1, 2, 3, 4]

# 对字符串用 extend:字符串被拆成单字符!
a = []
a.extend("abc")
print(a)  # ['a', 'b', 'c']

性能

extend 是 C 层批量操作,比循环 append 快;两者都是原地修改(返回 None)。

常见问题(FAQ)

Q:append 能一次加多个元素吗?
A:不能。append(1, 2) 会报 TypeError——append 只收一个参数。要加多个用 extend。

Q:insert 和 append 区别?
A:insert(i, x) 在任意位置插入,append(x) 固定加在末尾。

Q:想合并且保留原列表不变?
A:用 new = list1 + list2[*list1, *list2],创建新列表。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台