【Python】Python中的range你真的了解吗
程序员文章站
2024-03-21 16:45:34
...
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)
到这里报错,因为迭代已经结束
实际调试过程图:
上一篇: 18.SQL注入
下一篇: 王江民逝世 金山.netHTML