Python中append()
和extend()
的核心区别在于:append()
将整个对象作为单个元素添加到列表末尾,而extend()
会将可迭代对象的每个元素逐个展开后添加。两者均直接修改原列表,但适用场景和结果截然不同。
-
功能差异
append()
接受任意对象(如数字、字符串、列表等),将其整体插入列表。例如[1, 2].append([3, 4])
结果为[1, 2, [3, 4]]
。extend()
仅接受可迭代对象(如列表、元组、字符串),并拆分其元素逐个添加。例如[1, 2].extend([3, 4])
结果为[1, 2, 3, 4]
。
-
数据类型限制
append()
无类型限制,甚至可嵌套字典或自定义对象。extend()
要求参数为可迭代对象。若传入字典,仅添加键;传入字符串则拆分为字符。
-
内存与性能
append()
仅增加一个元素引用,内存开销较小。extend()
需遍历可迭代对象,元素较多时可能影响性能,但比循环append()
更高效。
-
常见误区
- 误用
append()
添加列表会导致嵌套结构,而extend()
可合并列表。 - 修改被
append()
添加的嵌套列表时,原列表会同步变化(引用相同地址),需用copy.deepcopy()
避免。
- 误用
总结:根据需求选择方法——需保留对象整体性时用append()
,需扁平化合并元素时用extend()
。注意两者对原列表的直接影响,避免意外数据同步问题。