You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何列表推导式比for循环append操作更慢?实测解析

意外发现:for循环append居然比列表推导式更快?

我测试得到了和预期相反的结果:显式for循环加append操作的耗时比列表推导式更短,具体数据如下:

  • for循环耗时:7.214778099999876
  • 列表推导式耗时:7.4003780000002735

我原本以为重复调用append的for循环会比列表推导式慢,但实际结果刚好相反。

测试代码

代码1:for循环+append实现

import timeit

mycode = '''
new_list=[]
x=[1,2,3,4,5]
for obj in x:
    if obj %2==0:
        new_list.append(obj)
'''
 
print(timeit.timeit(stmt=mycode, number=10000000))

代码2:列表推导式实现

import timeit

mycode = '''
x=[1,2,3,4,5]
new_list=[obj for obj in x if obj %2==0]
'''

print(timeit.timeit(stmt=mycode, number=10000000))

为什么会出现反常识的结果?

通常列表推导式因为是Python底层优化的字节码实现,比显式for循环+append要快,但这次测试的特殊点在于处理的列表x长度极短(仅5个元素)。

当列表长度极小时,列表推导式的初始化开销(比如语法解析、生成器框架创建等额外步骤)占比会被放大,反而盖过了它的效率优势;而显式append的循环逻辑更直接,在短列表场景下的多次重复执行中,反而能跑出略快的结果。

如果换成更长的列表(比如包含数百甚至上千个元素),你会发现列表推导式的速度优势会明显体现——此时元素处理的时间占比远远超过初始化开销,底层优化的效果就显现了。

内容的提问来源于stack exchange,提问作者Ryan Njonjo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 09:25:25