首页 > 其他 > 详细

关于迭代器

时间:2019-05-05 00:07:00      阅读:136      评论:0      收藏:0      [点我收藏+]
方法__iter__返回一个迭代器,它是包含方法__next__的对象,而调用这个方法时可不提供
任何参数。当你调用方法__next__时,迭代器应返回其下一个值。如果迭代器没有可供返回的值,
应引发StopIteration异常。你还可使用内置的便利函数next,在这种情况下,next(it)与
it.__next__()等效
 
斐波那契数列:
class Fib:
    def __init__(self):
        self.a=0
        self.b=1
    def __next__(self):
        self.a,self.b=self.b,self.a+self.b
        return self.a
    def __iter__(self):
        return self

fib=Fib()
for i in fib:
    if i<1000:
        print(i)
    else:
        break
 
通过对可迭代对象调用内置函数iter,可获得一个迭代器:
In [1]: it=iter([x for x in range(100)])

In [2]: next(it)
Out[2]: 0

In [3]: next(it)
Out[3]: 1

 

从迭代器创建序列
除了对迭代器和可迭代对象进行迭代(通常这样做)之外,还可将它们转换为序列。在可以
使用序列的情况下,大多也可使用迭代器或可迭代对象(诸如索引和切片等操作除外)。一个这
样的例子是使用构造函数list显式地将迭代器转换为列表
class TestIterator: 
    value = 0 
    def __next__(self): 
        self.value += 1 
        if self.value > 10: raise StopIteration 
        return self.value 
    def __iter__(self): 
        return self
it=TestIterator()
print(list(it))

运行结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

 

关于迭代器

原文:https://www.cnblogs.com/Kerryworld/p/10810454.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!