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

Python中range()函数使用疑问:为何用range()而非直接遍历列表?

两段Python遍历代码的区别与range()的适用场景

一、两段代码的核心区别

先看代码本身:
代码1:

a = [1, 2, 3, 4, 5]    
for elem in range(len(a)):   
  print(elem)  

代码2:

a = [1, 2, 3, 4, 5]   
for elem in a:   
    print(elem, end=' ')

两者的本质差异在于遍历的对象:

  • 代码1通过range(len(a))生成了列表a的索引序列(0,1,2,3,4),循环里的elem是列表的索引,最终输出0、1、2、3、4(每行一个)。
  • 代码2直接遍历列表a的元素本身,elem就是列表里的1、2、3、4、5,最终输出1 2 3 4 5(用空格分隔)。

二、直接遍历元素时,没必要用range()

能像代码2那样直接遍历元素的场景,优先用直接遍历的写法——这是Python的惯用风格,代码更简洁,意图更明确:你就是要处理列表里的元素,而不是索引。用range()绕一圈反而多此一举,可读性还更低。

三、什么时候需要用range()?

range()有它不可替代的使用场景,常见的有这几种:

  • 需要操作元素索引的时候:比如要修改列表中指定位置的元素,或者需要同时用到索引和元素(不过这种场景更推荐用enumerate(),比如for idx, val in enumerate(a):,比range(len(a))更优雅)。
  • 需要控制遍历步长:比如想隔一个元素取一个,用range(0, len(a), 2)就能实现从索引0开始,步长为2的遍历。
  • 需要循环固定次数:比如要重复执行某个操作5次,直接写for _ in range(5): do_something(),不需要额外创建列表。
  • 逻辑依赖索引数值:比如某些算法需要用到索引参与计算,比如对比相邻元素的位置关系,这时候索引就成了必要的变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:01:01