面试题答案
一键面试-
性能分析:
append()
:每次只能添加一个元素,对于大量元素的添加,会有大量的方法调用开销,性能相对较差。extend()
:可以一次添加多个元素,比append()
在添加多个元素时效率更高,因为减少了方法调用次数。- 列表拼接(如
list1 + list2
):每次拼接都会创建一个新的列表对象,这涉及到内存的重新分配和数据的复制,对于大量元素添加,性能开销较大。
所以,从性能角度考虑,
extend()
更适合该场景。 -
代码验证:
import time
# 测试append方法
def test_append():
my_list = []
start_time = time.time()
for i in range(1000000):
my_list.append(i)
end_time = time.time()
return end_time - start_time
# 测试extend方法
def test_extend():
my_list = []
sub_list = list(range(1000000))
start_time = time.time()
my_list.extend(sub_list)
end_time = time.time()
return end_time - start_time
# 测试列表拼接方法
def test_concat():
my_list = []
sub_list = list(range(1000000))
start_time = time.time()
my_list = my_list + sub_list
end_time = time.time()
return end_time - start_time
append_time = test_append()
extend_time = test_extend()
concat_time = test_concat()
print(f"append方法耗时: {append_time} 秒")
print(f"extend方法耗时: {extend_time} 秒")
print(f"列表拼接方法耗时: {concat_time} 秒")
通常运行结果会显示extend()
方法耗时最短,append()
方法次之,列表拼接方法耗时最长,从而验证extend()
在大量元素添加场景下的性能优势。