range函数python用法

概述
range()是python的一个内置函数,用来创建一个整数序列,常用于for循环中。理解range()的运用会对我们使用循环很有帮助。
语法
range函数语法格式如下:

- start:序列的起始数值,默认从0开始
- stop:序列结束的数值(不包含在序列中)
- step:步长,默认为1
参数说明
1.只有一个参数
range(stop)会创建一个从0开始一直增加到stop - 1的整数序列。例如:

输出结果:

2.有两个参数
range(start, stop)将会创建一个从start开始一直增加到stop - 1的整数序列。例如:

输出结果:

这里的stop值为5,但是实际上是创建1到4的序列,不包含stop本身。
3.有三个参数
range(start, stop, step)中的step表示每次跳跃的步长。例如:

输出结果:

这里我们设置start=1, stop=10, step=2,因此每次会跳跃2个数。
range类型
需要注意的是,range对象不是一个列表,而是一个只能迭代的”可迭代对象”。我们可以用list()来转换为列表类型。例如:

输出:

range函数示例
1.打印序列
range最简单的用法就是打印序列,例如我们想打印一个1-10的整数序列:

2.与列表推导式结合
由于range对象可以快速生成整数序列,我们可以将其与列表推导式结合使用:

3.与numpy数组结合
NumPy是python做科学计算的必备库。如果我们想生成一个递增的NumPy数组:

arange方法等效于range函数。
4.索引序列
我们可以利用range输出一个索引序列,来获取元组、列表或字符串中的元素:

5.结合enumerate函数
根据索引迭代元素时,我们通常会用到内置的enumerate函数,它会将索引和元素组合成一个元组:

这种方式更加Pythonic,无需使用range函数。
6.步长应用
选择不同的步长可以跳过不需要的元素,实现采样功能:

这里我们设置step=3,因此每次跳过两个数字。
7.反向迭代
如果想反向迭代序列,可以:

只需要将step设为负数即可。
8.结合random选择随机数
random库常用于生成随机数,结合range可以返回一个随机索引:

randrange和range使用类似,只是返回一个随机整数而不是序列。
range函数原理
实际上range使用了一种名为”迭代器”的技术来高效生成数值序列,而没有真的先创建一个完整的列表再返回,这才保证了range占用内存很小。
我们可以利用自己实现一个简单的Range类,模拟range的工作原理:

这里 ourRange类实现了__iter__方法和yield语法,使得该类成为一个generator,可以按照规则一个一个地生成数值,而不是事先准备好一个完整数值列表。
这就是range函数的基本思想。
range常见问题
最后,我们来讨论下range使用过程中的一些常见问题。
1. range不包含end端点
这个问题之前已经提及过。很多人很容易忽略,必须要注意。
2. range必须为整数类型
由于range的输入必须为整数,所以不能是浮点数:

3. start,end,step的顺序不能搞反
如果搞反参数顺序则会产生意外的序列:

必须传入正确的顺序,否则需要对结果序列逆序处理。
4. 步长不能为0
如果将step设置为0,将会抛出异常:

这是因为步长为0会造成无限循环。
小结
以上就是Python range完整用法,希望对大家有帮助。range函数是Python迭代中很重要的一个工具。
range主要特点为:
- 是一个可迭代对象,而不是列表
- 不会一次性将所有值加载到内存中,数据量大时更高效
- 使用参数控制数列范围和步长,用法灵活
需要注意的参数顺序、边界指示等问题。
多加练习,灵活运用range函数可以使我们的代码更加Pythonic!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)