社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

A逍遥之路 • 1 年前 • 383 次点击  
“你用过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(2102):
    print(i)  # 输出:2, 4, 6, 8

3. 逆序输出

通过调整步长,可以轻松实现逆序:

foriinrange(50-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(05-1):
    print(i)  # 什么都不会输出!

第三部分:实战技巧

1. 生成列表

虽然range()本身不是列表,但可以轻松转换为列表:

numbers=list(range(16))  # [1, 2, 3, 4, 5]

2. 结合enumerate()生成索引

在遍历列表时,如果需要索引,可以这样用:

fruits= ["苹果""香蕉""橙子"]
foridxfruitinenumerate(fruitsstart=1):  # start参数可以设置起始索引
    print(f"第{idx}个水果是{fruit}")

3. 实现自定义步长的循环

比如每隔3个元素处理一次:

data= [123456789]
foriinrange(0len(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)会输出什么了吗?欢迎在评论区留下你的答案! 如果你觉得这篇文章有用,点赞+转发,让更多人告别 range()的误区!

转发、收藏、在看,是对作者最大的鼓励!👏
关注逍遥不迷路,Python知识日日补!






           对Python,AI,自动化办公提效,副业发展等感兴趣的伙伴们,扫码添加逍遥,限免交流群

备注【成长交流】

图片



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/182587