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

使用for i in range(len(nums))每次迭代都算nums长度吗?两段代码效率是否一致?

两段Python代码的效率对比结论

二者运行效率几乎没有可感知的差异,严格从底层执行逻辑来看,第一段代码的效率还要略微高一点点,但差距极小,日常开发完全可以忽略。

具体原因说明

  • Python中列表属于内置序列类型,len() 是O(1)时间复杂度的操作:列表的长度会直接预存在底层结构体中,调用len(nums)不需要遍历列表统计元素,只是直接读取预存的数值,本身开销就极低。
  • range()的入参是在循环启动前一次性计算完成的,不会在每次循环迭代时重复计算,所以第一段代码里的len(nums)只会执行1次,和第二段提前把长度赋值给length变量的做法,调用len()的次数完全一致。
  • 第二段代码唯一多出的操作是把len(nums)的返回值赋值给了length局部变量,这一步只有可以忽略不计的额外开销,实际运行时完全感知不到差别。

更推荐的写法

如果要遍历列表同时获取索引和对应元素,更符合Python风格的写法是使用enumerate,可读性更高,执行效率也没有损失:

nums = [3,2,1,5,6,4]
for idx, num in enumerate(nums):
    print(idx, num)

内容的提问来源于stack exchange,提问作者Venkata Raman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:00