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() 会更高效。

相关推荐
凤山老林2 小时前
Spring Boot 启动冲刺:耗时剖析、懒加载策略与事件驱动初始化优化
spring boot·后端·python
朱涛的自习室3 小时前
我给 Gemini 4 和 DeepSeek 搞了套「末位淘汰」,AI 干活会更猛吗?(Day 3)
android·前端·后端
u1301306 小时前
GitHub 热榜项目:日榜(2026-10-15)
人工智能·github
woniu_maggie6 小时前
SAP MDG主数据治理实战:从架构原理到项目实施全解析
后端
xiaoqiMikko6 小时前
Redis 实战(一):内存满了 —— 拒写、淘汰、被系统杀掉,以及删了 key 内存为什么不降(6.2.4 实测)
redis·后端
子林super6 小时前
MySQL三大日志(binlog、redo log和undo log)详解
面试
张不净6 小时前
【Git 基础命令】从混乱到稳定的日常工作流
github
工程师小爱6 小时前
电芯尺寸合格,不等于电池包尺寸合格
后端
用户7273744138846 小时前
去掉图片背景:边缘发虚是怎么来的
github