个性化阅读
专注于IT技术分析

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
# integers
  
demo = 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 DS课程。


赞(0) 打赏
未经允许不得转载:srcmini » Python range()不返回迭代器
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏