先来看一下range函数的介绍:
range() 是 Python 里最常用、最重要的内置函数之一,专门用来生成一串连续的整数序列,主要用在 for 循环里。一般我们用for循环正向遍历,例如for i in range(0,5), for循环依次输出0、1、2、3、4,这种相对来说比较熟悉。但是反向遍历应该怎么写呢?又应该怎么理解呢?

  • 语法

    • range(start, end, step)
    • 参1: start 起始值
    • 参2: end 结束值, 不包括
    • 参3: step 步长
  • 特点

    • 左闭右开区间: range(a, b) 包含 a,不包含 b
    • 只能是整数: 不支持 float,只能 int
    • range 不是列表!它不一次性把所有数字存进内存,用一个生成一个,超级省内存
    • 可以转列表: list(range(5)) # [0,1,2,3,4]
  • 理解反向遍历前先来看下正向遍历

    # 正向遍历
    for i in range(0, 5):
    	print(i)
    # 执行:起始值是0 结束值是5 步长默认是1 因为range有左闭右开的特点 所以控制台依次输出 0,1,2,3,4 
    
  • 反向遍历

    想一想: 如果我们想输出的结果是 4,3,2,1,0 应该怎么写呢

    • 首先,我们应该能想到 把 5 和 0 换下位置,让 i 从 5 开始走到 0,变成range(5, 0),但是因为 左闭右开 这个特点,我们在写正向的时候是 包括 0 不包括 5,所以在反过来之后,应该两边各减1

    • 5 - 1的含义是本来正向的时候不包括5,反过来后放到起始值包括了,所以需要-1,变成4

    • 0 - 1的含义是本来正向的时候是包括0的,反过来后放到结束值变成不包括了, 我们现在是反向,需要在范围内加上0这个值,所以需要-1

    • 最终变成 range(4, -1)

    • 到这里还差关键一步,我们来看下step步长,本来是正向的,从 0-5 我们是可以依次拿到值的,但是我们此时反过来了,变成了range(-4, 1), 我们需要让步长倒着来,也就是反向,变成 -1

    • 最终形态是 range(4, -1, -1)

      for i in range(4, -1, -1):
      	print(i)
      # 此时我们看打印结果就是4,3,2,1,0了
      
      

更多推荐