range是一类不变的可迭代对象。可以将它们的迭代行为与
lists进行比较:您不能
next直接调用它们;您必须使用来获得迭代器
iter。
所以不,
range不是发电机。
您可能会想,“他们为什么不直接迭代呢?”?好吧,
ranges具有一些有用的属性,而这是不可能的:
- 它们是不可变的,因此可以用作字典键。
- 他们有
start
,stop
和step
属性(因为Python 3.3),count
和index
方法,它们支持in
,len
和__getitem__
*** 作。 - 您可以
range
多次迭代相同的对象。
>>> myrange = range(1, 21, 2)>>> myrange.start1>>> myrange.step2>>> myrange.index(17)8>>> myrange.index(18)Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: 18 is not in range>>> it = iter(myrange)>>> it<range_iterator object at 0x7f504a9be960>>>> next(it)1>>> next(it)3>>> next(it)5
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)