page contents

Python中的range():你以为你懂,其实你可能只懂了20%

“你用过Python的range()函数吗?” “当然用过啊,不就是for i in range(10)嘛!”“那你知道range(10, -5, -2)会输出什么吗?”如果你的回答是“不知道”或“不确定”,那这篇文章就是为你准备的!range()是Python中最基础、最常用的函数之一,但它的隐藏技巧和深度用法,可能远超你的想象。
attachments-2025-05-ucRudsXB683511e600448.jpg
“你用过Python的range()函数吗?” “当然用过啊,不就是for i in range(10)嘛!”“那你知道range(10, -5, -2)会输出什么吗?”如果你的回答是“不知道”或“不确定”,那这篇文章就是为你准备的!range()是Python中最基础、最常用的函数之一,但它的隐藏技巧和深度用法,可能远超你的想象。
第一部分:基础用法(快速回顾)
1. 基本语法
range()函数用于生成一个整数序列,常用于for循环中。
foriinrange(5):
    print(i)  # 输出:0, 1, 2, 3, 4
2. 三个参数的含义
start(起始值,可选,默认为0)
stop(结束值,不包含)
step(步长,可选,默认为1)
foriinrange(2, 10, 2):
    print(i)  # 输出:2, 4, 6, 83. 逆序输出
通过调整步长,可以轻松实现逆序:
foriinrange(5, 0, -1):
    print(i)  # 输出:5, 4, 3, 2, 1
第二部分:你可能不知道的冷知识
1. range()不是列表,而是一个“懒惰”的生成器
很多人误以为range()返回一个列表,但实际上它返回的是一个“range对象”,只有在需要时才生成数值,节省内存。
r=range(1000000)  # 不会占用大量内存
print(r)  # 输出:range(0, 1000000)
2. 可以直接用in判断是否在范围内
if5inrange(10):
    print("5在范围内!")  # 输出:5在范围内!
3. 负数步长的陷阱
如果你尝试用负数步长但没有正确设置起始和结束值,可能会得到一个空序列:
foriinrange(0, 5, -1):
    print(i)  # 什么都不会输出!
第三部分:实战技巧
1. 生成列表
虽然range()本身不是列表,但可以轻松转换为列表:
numbers=list(range(1, 6))  # [1, 2, 3, 4, 5]
2. 结合enumerate()生成索引
在遍历列表时,如果需要索引,可以这样用:
fruits= ["苹果", "香蕉", "橙子"]
foridx, fruitinenumerate(fruits, start=1):  # start参数可以设置起始索引
    print(f"第{idx}个水果是{fruit}")
3. 实现自定义步长的循环
比如每隔3个元素处理一次:
data= [1, 2, 3, 4, 5, 6, 7, 8, 9]
foriinrange(0, len(data), 3):
    print(data[i:i+3])  # 输出:[1,2,3], [4,5,6], [7,8,9]
第四部分:常见误区与解答
1. range()和xrange()的区别?(Python 2)
在Python 2中,range()返回列表,而xrange()返回生成器(类似Python 3的range())。
但在Python 3中,xrange()已被移除,range()直接优化为生成器。
2. 为什么range()的结束值不包含?
这是编程中的常见设计(如切片、数组索引),遵循“左闭右开”原则,避免边界混淆。
3. range()能用于浮点数吗?
不能!range()只支持整数,如果要用浮点数,可以用numpy.arange()或列表推导式:
[0.1*iforiinrange(10)]  # [0.0, 0.1, 0.2, ..., 0.9]
现在,你知道range(10, -5, -2)会输出什么了吗?

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-05-27 09:14
  • 阅读 ( 58 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

2172 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2172 文章
  3. Pack 1335 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章