在 Python 中,向列表添加元素常用的方法有 append()
和 extend()
。这两个方法虽然都可以用来添加元素,但它们的行为和性能有明显的差异。
1. 行为差异
append()
-
作用:将传入的元素作为一个整体添加到列表的末尾。
-
示例 :
pythonoutput_contents = [] content = [1, 2, 3] output_contents.append(content) print(output_contents) # 输出:[[1, 2, 3]]
extend()
-
作用:将传入的可迭代对象中的每个元素逐一添加到列表的末尾。
-
示例 :
pythonoutput_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()
会更高效。