![0a59b1911f4f4a5a1f05b3a2127c3ce8.png](https://i-blog.csdnimg.cn/blog_migrate/5b4bb7481b807fef7ecdc0b9b85ec3fb.jpeg)
从刚开始接触到range()函数到后来相当长的一段时间,我都是把range()当成一个数字迭代器,比如range(10)就是0~9,range(100)就是0~99,复杂一点的呢range(1,10,2)就是(2,4,6,8),这个想法呢,也不能说错,但是也不能说是绝对的正确,接下来我来跟大家唠唠我所理解的range()到底是个什么玩意儿,首先让我们来看一段代码:
a
可以看出range本身就是一个range,说白了他只是一个代表着0~9的序列而已,并不是一个具体的对象,让我们再来看下这一段代码:
b
当我们在前面套了一个list的时候,系统最后返回的对象就是一个拥有0~9九个10个整数的list对象了,也可以理解为list将这个range()具象化了~
接下来让我们看下这两段代码:
for
你可以能会觉得奇怪,都是到10为止的为什么上面那行代码输出了10次而下面那行代码只输出了5次呢,其实道理也很简单呀,因为上一个是0~9的序列,总共十个序号,所以就会输出10次,而下面那段的(0,2,4,6,8)序列,只要5个序号,所以只会输出5次,其实这个也就好比我之前所说的手枪,range(10)的话就是让手枪连续射击10次,而range(0,10,2)的话就是从头颗子弹开始射击,打一颗退掉一颗,打一颗退掉一颗,一直到第10颗子弹为止,就我理解而言可以这么讲,如果你将range()函数应用于特定数字集合对象的话,那么里面的序号和序号数量就都很重要,比如上面我说的list,如果你只是想用于重复输出某个对象的话,则只要设置好特定的需要数量就可以了,比如上面的for x in range(0,10,2)你也可以换成range(5),因为饿着都是5个序列号~