python中range(start, end, step)函数步长为负的理解
·
先来看一下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了
-
更多推荐
所有评论(0)