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

相关推荐
草梅友仁3 小时前
草梅 Auth 1.1.0 发布与最新动态 | 2025 年第 30 周草梅周报
开源·github·ai编程
武子康3 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
PAK向日葵3 小时前
【算法导论】如何攻克一道Hard难度的LeetCode题?以「寻找两个正序数组的中位数」为例
c++·算法·面试
舒一笑3 小时前
我的开源项目-PandaCoder迎来史诗级大更新啦
后端·程序员·intellij idea
mortimer4 小时前
安装NVIDIA Parakeet时,我遇到的两个Pip“小插曲”
python·github
@昵称不存在4 小时前
Flask input 和datalist结合
后端·python·flask
zhuyasen5 小时前
Go 分布式任务和定时任务太难?sasynq 让异步任务从未如此简单
后端·go
东林牧之5 小时前
Django+celery异步:拿来即用,可移植性高
后端·python·django
超浪的晨6 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
AntBlack6 小时前
从小不学好 ,影刀 + ddddocr 实现图片验证码认证自动化
后端·python·计算机视觉