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

相关推荐
Gladiator575几秒前
博客记录-day145-力扣+编程题
github
小p1 小时前
迈向全栈:服务器上的软件安装
前端·后端
Bohemian2 小时前
浅谈Golang逃逸分析
后端·面试·go
用户1529436849592 小时前
谷歌云代理商:如何配置谷歌云服务器的端口转发?
后端
努力的搬砖人.2 小时前
Spring Boot集成MinIO的详细步骤
java·spring boot·后端
JiangJiang2 小时前
🤯 Vue 人快上车!用 useContext 实现 Vuex 同款全局状态管理!
前端·react.js·面试
货拉拉技术2 小时前
订单哨兵OrderSentinel平台介绍
javascript·后端·程序员
_一条咸鱼_3 小时前
大厂Android面试秘籍:Activity 组件间通信
android·面试·android jetpack
Ramseyuu3 小时前
java面试篇 4.9
java·开发语言·面试
精神内耗中的钙奶饼干3 小时前
Springboot整合kafka记录
后端·kafka