基本定义
append() 方法
- 作用:在列表末尾添加单个元素
- 语法:
list.append(element) - 特点:无论添加什么,都作为一个整体元素加入
extend() 方法
- 作用:在列表末尾添加多个元素
- 语法:
list.extend(iterable) - 特点:将可迭代对象中的元素逐个加入
本文详细对比了 Python 列表中 append 和 extend 两个方法的区别。append 用于添加单个元素,保持原对象结构;extend 用于添加可迭代对象中的多个元素,实现扁平化。通过列表、字符串、元组、字典等多种类型的示例,展示了两者在不同场景下的行为差异。文章还提供了树形结构处理和数据合并的实际应用案例,并与 + 运算符进行了对比,最后总结了选择指南。
list.append(element)list.extend(iterable)# 基础示例
fruits = ['apple', 'banana']
# append 用法
fruits.append('orange')
print(fruits) # ['apple', 'banana', 'orange']
# extend 用法
fruits.extend(['grape', 'mango'])
print(fruits) # ['apple', 'banana', 'orange', 'grape', 'mango']
list1 = [1, 2, 3]
list2 = [4, 5, 6]
# append - 将整个 list2 作为一个元素添加
list1.append(list2)
print(list1) # [1, 2, 3, [4, 5, 6]] - 嵌套列表!
# extend - 将 list2 中的元素逐个添加
list1 = [1, 2, 3] # 重新初始化
list1.extend(list2)
print(list1) # [1, 2, 3, 4, 5, 6] - 扁平列表
words = ['hello']
# append - 整个字符串作为一个元素
words.append('world')
print(words) # ['hello', 'world']
# extend - 字符串被拆分为字符
words = ['hello'] # 重新初始化
words.extend('world')
print(words) # ['hello', 'w', 'o', 'r', 'l', 'd']
numbers = [1, 2]
# append - 整个元组作为一个元素
numbers.append((3, 4))
print(numbers) # [1, 2, (3, 4)]
# extend - 元组元素逐个添加
numbers = [1, 2] # 重新初始化
numbers.extend((3, 4))
print(numbers) # [1, 2, 3, 4]
# append 添加整个字典
my_list = ['start']
my_list.append({'a': 1, 'b': 2})
print(my_list) # ['start', {'a': 1, 'b': 2}]
# extend 添加字典的键
my_list = ['start'] # 重新初始化
my_list.extend({'a': 1, 'b': 2})
print(my_list) # ['start', 'a', 'b']
class TreeNode:
def get_all_nodes(self):
"""获取所有节点"""
all_nodes = [self] # 先添加自己
# 对于每个子节点,递归获取其所有节点并扩展
for child in self.children:
all_nodes.extend(child.get_all_nodes()) # 正确:扁平化添加
# 如果错误使用 append:
# for child in self.children:
# all_nodes.append(child.get_all_nodes()) # 错误:产生嵌套列表
return all_nodes
# 合并多个数据源
def merge_data_sources(*sources):
merged_data = []
for source in sources:
if isinstance(source, list):
merged_data.extend(source) # 合并列表
else:
merged_data.append(source) # 添加单个元素
return merged_data
# 使用示例
result = merge_data_sources(
[1, 2, 3], 'hello', (4, 5), [6, 7]
)
print(result) # [1, 2, 3, 'hello', (4, 5), 6, 7]
# 与 + 运算符对比
list1 = [1, 2, 3]
list2 = [4, 5, 6]
# extend - 原地修改
list1.extend(list2)
print(list1) # [1, 2, 3, 4, 5, 6]
# + 运算符 - 创建新列表
list1 = [1, 2, 3]
new_list = list1 + list2
print(new_list) # [1, 2, 3, 4, 5, 6]
print(list1) # [1, 2, 3] - 原列表不变
| 特性 | append() | extend() |
|---|---|---|
| 参数 | 单个元素 | 可迭代对象 |
| 结果 | 添加整个对象作为元素 | 添加可迭代对象中的每个元素 |
| 内存 | 较少修改 | 可能涉及更多内存操作 |
| 性能 | O(1) | O(k),k 为可迭代对象长度 |
| 适用场景 | 添加单个元素 | 合并多个元素 |
| 返回值 | None(原地修改) | None(原地修改) |
| 嵌套处理 | 可能产生嵌套 | 保持扁平结构 |
使用 append() 当:
使用 extend() 当:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
暂无推荐文章,稍后可再来查看。
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online