Python range()不返回迭代器

range() :Python范围函数会生成一个数字列表, 该数字列表通常在for循环或许多其他情况下的许多情况下用于迭代。在python range对象不是迭代器。 range是不可变对象列表的一类。 range的迭代行为类似于list和range中list的迭代行为, 我们不能直接调用next函数。如果我们得到一个使用iter的迭代器, 则可以调用next。

# Python program to understand range # this creates a list of 0 to 5 # integersdemo = range ( 6 )# print the demo print (demo)# it will generate error print ( next (demo))

输出:
range(0, 6)

运行时错误:
Traceback (most recent call last): File "/home/6881218331a293819d2a4c16029084f9.py", line 13, in print(next(demo)) TypeError: list object is not an iterator

注意 :以上运行时错误明确表明python range不是迭代器。
因为范围是可迭代的因此我们可以在它们的帮助下获得一个迭代器, 但不能直接在next中调用next。下面的示例清楚地说明了这一点
# Python program to understand range# creates an iterator demo = iter ( range ( 6 ))# print iterator print (demo)# use next print ( next (demo))

输出:
< listiterator object at 0x7f3f32a46450> 0

创建范围时, range不会生成它包含的所有数字。它只给出我们使用循环得到的那些数字。范围具有以下属性。
  • 范围对象是不可变的, 这意味着它们不能再次更改, 因此可以用作字典中的索引。
  • 它们具有start stop和step参数。
  • 同一范围可以一次又一次地访问
例子
# Python program to understand range# creates a demo range demo = range ( 1 , 31 , 2 )# print the range print (demo)# print the start of range print (demo.start)# print step of range print (demo.step)# print the index of element 23 print (demo.index( 23 ))# since 30 is not present it will give error print (demo.index( 30 ))

输出:
range(1, 31, 2) 1 2 11

运行时错误:由于元素30不存在, 它将引发错误
Traceback (most recent call last): File "/home/cddaae6552d1d9288d7c5ab503c54642.py", line 19, in print(demo.index(30)) ValueError: 30 is not in range

【Python range()不返回迭代器】首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

    推荐阅读