Python 列表添加元素:`append()` 和 `extend()` 的区别

在 Python 中,向列表添加元素常用的方法有 append()extend()。这两个方法虽然都可以用来添加元素,但它们的行为和性能有明显的差异。

1. 行为差异

append()

  • 作用:将传入的元素作为一个整体添加到列表的末尾。

  • 示例

    python 复制代码
    output_contents = []
    content = [1, 2, 3]
    output_contents.append(content)
    print(output_contents)  # 输出:[[1, 2, 3]]

extend()

  • 作用:将传入的可迭代对象中的每个元素逐一添加到列表的末尾。

  • 示例

    python 复制代码
    output_contents = []
    content = [1, 2, 3]
    output_contents.extend(content)
    print(output_contents)  # 输出:[1, 2, 3]

2. 性能差异

append()

  • 时间复杂度:O(1),因为每次只添加一个元素。
  • 适用场景:添加单个元素时非常高效。

extend()

  • 时间复杂度:O(k),其中 k 是可迭代对象的长度。
  • 适用场景:添加多个元素时更高效,因为它只需要进行一次内存分配和复制操作。

3. 性能比较

  • 添加单个元素append() 更快,因为它只涉及一次操作。
  • 添加多个元素extend() 更快,因为它可以批量处理,减少内存分配和复制的次数。

示例代码:性能比较

python 复制代码
import time

# 添加单个元素
start_time = time.time()
output_contents = []
for i in range(10000):
    output_contents.append(i)
print(f"append() 添加单个元素耗时:{time.time() - start_time} 秒")

# 添加多个元素
start_time = time.time()
output_contents = []
content = list(range(10000))
output_contents.extend(content)
print(f"extend() 添加多个元素耗时:{time.time() - start_time} 秒")

# 添加多个元素,使用多次 append()
start_time = time.time()
output_contents = []
content = list(range(10000))
for item in content:
    output_contents.append(item)
print(f"多次 append() 添加多个元素耗时:{time.time() - start_time} 秒")

通过上述示例,可以看到在添加多个元素时,使用 extend() 方法通常比多次调用 append() 更快。因此,如果需要添加单个元素,使用 append();如果需要添加多个元素,尤其是来自一个可迭代对象,使用 extend() 会更高效。

相关推荐
葫芦和十三17 小时前
图解 MongoDB 19|Oplog:复制的真正载体,不是文档是操作
后端·mongodb·agent
葫芦和十三18 小时前
图解 MongoDB 20|复制延迟与 catch up:Secondary 为什么跟不上
后端·mongodb·agent
IT_陈寒1 天前
SpringBoot自动配置的坑,我的API突然就404了
前端·人工智能·后端
ServBay1 天前
为什么说 MCP 是 2026 年开发者必须掌握的黄金协议?
后端·mcp
程序员夏洛1 天前
Spring Boot 多模块项目中 IDEA 提示 Cannot resolve symbol 的一次排查记录
后端
子兮曰1 天前
OpenMontage 深度解剖:你的 AI 编程助手,其实是个视频工作室
前端·后端·ai编程
子兮曰1 天前
前端工具链的「Rust 化」:一场没有赢家的军备竞赛?
前端·后端·rust
爱勇宝1 天前
从 Ctrl+CV 到 Enter:程序员正在失去什么
前端·后端·程序员
程序员天天困1 天前
Loop Engineering 实战:/goal 命令让 AI 自己写完整项目
github