【Python】Python中的range你真的了解吗

本文深入探讨了Python中range的基本类型特性,解释了它为何不是迭代器而是可迭代对象,并通过实例展示了如何利用range生成序列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python中的range你真的了解吗

链接:
range的官方文档
为什么range不是迭代器?range到底是什么类型?

在看了诸多博文之后,终于对range这个神奇的物种有了初步了解,其具有以下特点:

  • range是一种基本类型。官方文档指出:python中有三种基本的序列类型:列表、元组和范围(range)对象
  • range 是可迭代对象而不是迭代器
  • range对象的值不可改变

接下来探索以下range具体迭代用法。


"""生成一个range类型的可迭代对象:"""
>>> a = range(3)

>>> type(a)
range

"""可以看到a的类型是range,有点懵,看下帮助文档"""
>>> print(a.__doc__)

range(stop) -> range object  
range(start, stop[, step]) -> range object  

Return an object that produces a sequence of integers from start (inclusive) to stop (exclusive) by step.  range(i, j) produces i, i+1, i+2, ..., j-1. 
start defaults to 0, and stop is omitted!  range(4) produces 0, 1, 2, 3. 
These are exactly the valid indices for a list of 4 elements. 
When step is given, it specifies the increment (or decrement).
"""文档介绍了一下range的用法,并没有细说"""


"""接着在PyCharm里用`.`的方法可以看到,a具有方法:start,stop,step""
>>> a.start
0
>>> a.stop
3
>>> a.step
1

"""
接着对a进行迭代
因为a是可迭代对象,需要使用iter()函数将a转为迭代器,接着使用next()方法进行迭代取值
"""

>>> b = iter(a)   

 """现在b终于是range可迭代对象了,现在用type查看一下:"""
 
>>> type(b)
range_iterator

"""迭代"""

>>> next(b)
0

>>> next(b)
1

>>> next(b)
2

>>> next(b)

StopIteration    Traceback (most recent call last)
<ipython-input-57-adb3e17b0219> in <module>()
----> 1 next(b)

到这里报错,因为迭代已经结束

实际调试过程图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值