百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python必会的20核心函数—range()函数

off999 2025-07-02 23:48 22 浏览 0 评论

range()函数是Python中用于生成不可变数字序列的核心函数,它在循环控制和序列生成中扮演着重要角色。本文将全面解析range()函数的用法和特性。

1. range()函数的基本用法

1.1 基本语法

range(stop)
range(start, stop[, step])
  • start:序列起始值(包含,默认为0)
  • stop:序列结束值(不包含)
  • step:步长(默认为1)

1.2 三种调用方式

# 1. 只指定stop
print(list(range(5)))      # [0, 1, 2, 3, 4]

# 2. 指定start和stop
print(list(range(2, 7)))   # [2, 3, 4, 5, 6]

# 3. 指定start、stop和step
print(list(range(1, 10, 2)))  # [1, 3, 5, 7, 9]

2. range()函数的详细解析

2.1 生成递减序列

# 步长为负数可生成递减序列
print(list(range(10, 0, -1)))  # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print(list(range(5, -5, -2)))  # [5, 3, 1, -1, -3]

2.2 range对象的特点

range对象是惰性序列,不会立即生成所有元素:

r = range(1000000)
print(sys.getsizeof(r))  # 占用很小内存,与范围大小无关

2.3 支持的操作

range对象支持序列操作

r = range(1, 10, 2)

# 索引访问
print(r[2])      # 5

# 切片(返回新的range对象)
print(r[:2])     # range(1, 5, 2)

# 成员检测
print(5 in r)    # True
print(6 in r)    # False

# 长度
print(len(r))    # 5

3. range()的实际应用

3.1 循环控制

# 基本for循环
for i in range(5):
    print(i)  # 0,1,2,3,4

# 带步长的循环
for i in range(0, 10, 2):
    print(i)  # 0,2,4,6,8

# 反向循环
for i in range(5, 0, -1):
    print(i)  # 5,4,3,2,1

3.2 生成索引序列

fruits = ['apple', 'banana', 'cherry']
for i in range(len(fruits)):
    print(f"{i}: {fruits[i]}")

3.3 数值序列生成

# 生成偶数序列
evens = list(range(0, 20, 2))

# 生成指定范围内的浮点数
def float_range(start, stop, step):
    return [start + i*step for i in range(int((stop-start)/step))]

print(float_range(0, 1, 0.1))  # [0.0, 0.1, 0.2, ..., 0.9]

4. 特殊用法和技巧

4.1 与enumerate()结合

fruits = ['apple', 'banana', 'cherry']
for i, fruit in enumerate(fruits):
    print(f"{i}: {fruit}")

4.2 替代传统C风格循环

Pythonic写法:

# 不推荐
for i in range(len(items)):
    print(items[i])

# 推荐
for item in items:
    print(item)

4.3 生成固定大小的空结构

# 初始化长度为10的空列表
empty_list = [None] * 10

# 使用range初始化
empty_list = [None for _ in range(10)]

5. 常见问题解答

5.1 range和xrange的区别?

  • Python 2中有range()(返回列表)和xrange()(返回生成器)
  • Python 3中range()等同于Python 2的xrange(),且移除了xrange()

5.2 为什么range不包含结束值?

这种设计(包含开始不包含结束):

  • 与Python切片行为一致
  • 方便计算长度:len(range(a,b)) == b-a
  • 避免数值精度问题导致的边界错误

5.3 如何实现包含结束值的range?

def inclusive_range(start, stop, step=1):
    return range(start, stop + (1 if step > 0 else -1), step)

print(list(inclusive_range(1, 5)))  # [1,2,3,4,5]

5.4 range对象可以重复使用吗?

可以,range是不可变序列,可以多次迭代:

r = range(3)
print(list(r))  # [0,1,2]
print(list(r))  # [0,1,2] 可以重复使用

6. 性能考虑

  • range对象在内存使用上非常高效
  • 在Python 3中,for i in range(n)比Python 2中的等效代码更快
  • 对于非常大的范围,使用range比生成列表更节省内存

7. 总结

range()函数是Python中生成数字序列的核心工具,主要特点包括:

  • 生成惰性计算的不可变序列
  • 支持正负步长
  • 内存高效,适合大范围数字
  • 支持序列基本操作(索引、切片等)

关键要点:

  • 结束值不包含在序列中
  • 步长可以是正数或负数
  • 在循环中优先直接使用range,而非先转换为列表
  • Python 3的range比Python 2的更高效

掌握range()函数能够帮助你:

  • 编写更高效的循环
  • 生成各种数字序列
  • 处理大数据集时节省内存
  • 编写更Pythonic的代码

相关推荐

电脑里一堆microsoft visual

按照系统向下兼容原理,保留2010就可以了.1)你安装的时候是不是把创建快捷键的选项框都没选上,导致在开始菜单中没有找到相应的链接?2)去你的安装目录下,找到Microsoftvisualc++...

windows无法识别usb(windows无法识别usb设备)
windows无法识别usb(windows无法识别usb设备)

Windows无法识别USB,解决办法如下右键开始菜单打开设备管理器,在通用串行总线控制器中右键点击设备选择“卸载”,完成后重新启动计算机即可解决问题。这有可能是在组策略中禁用了USB口,可以使用快捷键【Win+R】运行gpedit.msc...

2025-11-10 11:51 off999

bios能看到硬盘 开机找不到硬盘

bios里可以看到硬盘,说明硬盘已经被主板识别。进系统找不到,可能硬盘没分区,或者硬盘是动态磁盘,还没有导入或激活。按win+r,输入diskmgmt.msc回车,就打开磁盘管理了,在里面可以给新硬盘...

找回qq聊天记录的方法(找回qq聊天记录怎么找)
  • 找回qq聊天记录的方法(找回qq聊天记录怎么找)
  • 找回qq聊天记录的方法(找回qq聊天记录怎么找)
  • 找回qq聊天记录的方法(找回qq聊天记录怎么找)
  • 找回qq聊天记录的方法(找回qq聊天记录怎么找)
无线网有个红叉(无线网有个红叉,搜索不到网络)

连接失败,路由坏换路由,外网坏,报修无线网络处出现红叉表示设备无法正常工作。请检查网卡驱动是否正常,无线网络开关是否打开。解决方法:查看电脑是否有无线网络开关,且是否打开。进入设备管理器检查网卡驱动是...

thinkpad笔记本官网首页(thinkpad官方商城)

官方网站 国内:http://www.thinkworld.com.cn   国内用户只需要访问国内即可。  ThinkPad,中文名为“思考本”,在2005年以前是IBMPC事业部旗下的便携式计算机...

win7什么版本最好用(win7哪个版本最稳定流畅)

Windows7旗舰版,最好,最稳定。Windows7,是由微软公司(Microsoft)开发的操作系统,内核版本号为WindowsNT6.1。Windows7可供选择的版本有:简易版(Sta...

win7自带虚拟光驱怎么使用(win7系统虚拟光驱安装教程)

以DAEMONTools为例,360软件管家里面就有最新版的下.安装后使用方法如下:第一种方法:在虚拟光驱界面中,你先按一下中间工具栏最左边“+”符号的按钮,添加镜像文件(可以一次添加多个),这...

电脑装系统蓝屏(电脑装系统蓝屏重启开不了机)

蓝屏的原因往往集中在不兼容的硬件和驱动程序、有问题的软件、病毒等。解决办法:1、病毒的原因。使用电脑管家杀毒。2、内存的原因。用橡皮擦把内存条的金手指擦拭一下,把氧化层擦掉,确保内存条安装、运行正常。...

u盘安装软件(u盘安装软件到电视)

第一种情况:软件安装包可以直接下载的。在电脑上将软件安装包下载到本地硬盘,然后将下载好软件安装包拷贝到U盘上即可拿到别的电脑上去安装。分可为exe格式的和rar格式,exe格式直接安装,rar格式的解...

microsoft官网账户注册(microsoft 帐户注册)

要创建Microsoft账户,您可以按照以下步骤进行操作:1.打开任意一个支持浏览器的设备,如电脑、手机或平板电脑。2.在浏览器中输入"Microsoft账户注册"或直接访问Mic...

outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
显示器闪屏是什么原因(显示器闪屏是哪里坏了)

解决方法:  一、接触不良导致的显示器闪屏  先查看主机和显示器的电源线连接,是否松动,重新插拔一下电源线。  二、信号干扰导致的显示器闪屏  1、连接显示器的电缆线是否没有屏蔽线圈,如果没有防干扰的...

国产linux操作系统(国产linux操作系统有什么版本)

中国对于操作系统的探索其实并不晚。  早在20世纪60年代中期中国就开始操作系统的研发,那时的比尔·盖茨还只是个迷恋计算机的小字辈,南京大学教授孙钟秀、北京大学杨芙清院士等都是我国操作系统的拓荒者...

免费无需排队的云电脑(不需要排队的云电脑)

目前市场上有一些云游戏平台提供无限时长且无需排队的服务。这些平台通常采用先进的云计算技术和高性能服务器,能够提供稳定流畅的游戏体验。用户可以随时登录并畅玩游戏,无需等待排队。这些平台还提供多种游戏选择...

取消回复欢迎 发表评论: