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

Python中向列表追加100整数耗时10秒,为何远慢于追加10万字符串?

为啥列表追加100个整数耗时10秒?原来是测试方式的锅!

嘿,我来帮你把这个困惑捋清楚~你遇到的问题其实是因为你误解了timeit工具的运行逻辑,咱们一步步拆解:

核心原因:timeit默认会重复执行百万次代码

你用的timeit.timeit()函数,默认情况下会把目标代码(也就是这里的test())重复执行1000000次(整整一百万次!)。

你的test()函数每次运行会做100次L.append(i),那算下来总共的append操作次数是:
1000000 * 100 = 1亿次
这么多操作耗时10秒,完全是合理的范围。

你之前的字符串测试是单次运行,根本不是一个维度

你提到的追加100000个字符串耗时0.06秒,是因为你手动执行了一次wordlist1()函数,只跑了一轮10万次append。这和timeit百万次重复运行的测试结果,根本没有可比性。

验证一下?试试修改timeit的执行次数

你可以调整timeit的number参数,指定只运行1次:

print(timeit.timeit("test()", setup="from __main__ import test", number=1))

这时候你会看到test()的耗时非常短,和你预期的一样。

反过来,如果你用timeit测试wordlist1(),比如让它跑10次:

print(timeit.timeit("wordlist1()", setup="from __main__ import wordlist1", number=10))

你会得到大约0.6秒的结果,刚好是单次0.06秒的10倍,这也能验证咱们的结论。

最后补一句:timeit的设计初衷

timeit本来就是用来测试小段代码的平均执行耗时,通过多次重复运行来抵消单次运行的波动,所以默认次数设置得很高。下次用的时候记得留意这个默认行为哦~

内容的提问来源于stack exchange,提问作者Michael Chen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:21:23