双列表遍历:双for循环与合并后单循环的性能对比
遍历两个列表:双循环 vs 合并后单循环的性能对比
结论:绝大多数场景下,用两个独立的for循环分别遍历列表,比先合并列表再用单个for循环要快。
核心原因
- 合并列表(
list_a + list_b)会产生额外开销:需要创建新列表,把两个原列表的元素全部复制进去。这个复制操作既占用内存,又消耗时间,列表越大,该开销越显著。 - 两个独立的for循环直接遍历原列表,不需要额外的内存分配和元素复制,全程只操作已有数据,没有多余步骤。
实测验证
把列表放大后用timeit测试,性能差异会更直观:
import timeit # 放大数据量,让性能差异更易观察 list_a = ["Red", "Blue", "Black"] * 1000 list_b = ["Samsung", "Apple"] * 1000 def double_loop(): for item in list_a: pass for item in list_b: pass def merged_loop(): merged = list_a + list_b for item in merged: pass # 各运行1000次取平均耗时 print("双循环平均耗时:", timeit.timeit(double_loop, number=1000)) print("合并后单循环平均耗时:", timeit.timeit(merged_loop, number=1000))
运行结果通常是双循环耗时更短——合并步骤的额外开销,远超过单循环可能带来的微小效率提升。
特殊情况
如果两个列表极小(比如只有几个元素),合并的开销几乎可以忽略,两者的性能差异可能微乎其微,但双循环依然不会比合并后单循环慢。
内容的提问来源于stack exchange,提问作者Ali Bahaari
相关产品推荐
相关产品推荐

