Python中append()
和extend()
的核心区别在于:append()
将整个对象作为单个元素添加到列表末尾,而extend()
将可迭代对象的元素逐个拆分后追加。 例如,lst.append([1,2])
会生成[...[1,2]]
,而lst.extend([1,2])
会得到[...,1,2]
。
-
功能差异
append()
:无论参数是单个值还是可迭代对象,都将其视为一个整体插入列表。适合添加独立元素(如字典、嵌套列表)。extend()
:仅接受可迭代对象(如列表、字符串),并遍历其内容逐一追加。适用于合并多个序列。
-
参数要求
append()
接受任意类型参数(数字、字符串、对象等)。extend()
要求参数必须可迭代(如列表、元组、字符串),否则报错。
-
性能对比
- 添加单个元素时,两者性能接近。
- 合并大型列表时,
extend()
比循环调用append()
更高效,因其内部优化了迭代过程。
-
使用场景
- 需保留数据结构时用
append()
(如二维列表)。 - 需扁平化扩展元素时用
extend()
(如拼接多个列表)。
- 需保留数据结构时用
根据需求选择方法——保留原结构选append()
,拆分元素选extend()
。错误使用可能导致嵌套过深或类型错误。