MST

星途 面试题库

面试题:Python列表元素添加的性能优化场景

假设你有一个非常大的初始为空的列表,需要向其中添加大量元素。从性能角度考虑,在使用append()、extend()、列表拼接(如list1 + list2)这几种添加元素方式中,哪种更适合该场景,为什么?并且请编写代码验证你的结论,通过记录时间等方式展示不同方法的性能差异。
16.3万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 性能分析

    • append():每次只能添加一个元素,对于大量元素的添加,会有大量的方法调用开销,性能相对较差。
    • extend():可以一次添加多个元素,比append()在添加多个元素时效率更高,因为减少了方法调用次数。
    • 列表拼接(如list1 + list2:每次拼接都会创建一个新的列表对象,这涉及到内存的重新分配和数据的复制,对于大量元素添加,性能开销较大。

    所以,从性能角度考虑,extend()更适合该场景。

  2. 代码验证

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()在大量元素添加场景下的性能优势。