博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于迭代器
阅读量:5332 次
发布时间:2019-06-15

本文共 1007 字,大约阅读时间需要 3 分钟。

方法__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 selffib=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]: 0In [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 selfit=TestIterator()print(list(it))

运行结果:

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

 

 

转载于:https://www.cnblogs.com/Kerryworld/p/10810454.html

你可能感兴趣的文章
css3渐变画斜线 demo
查看>>
JS性能DOM优化
查看>>
设计模式 单例模式 使用模板及智能指针
查看>>
c#的const可以用于引用类型吗
查看>>
手动实现二值化
查看>>
What Linux bind mounts are really doing
查看>>
linux top命令详解
查看>>
博弈论小结
查看>>
模拟Post登陆带验证码的网站
查看>>
NYOJ458 - 小光棍数
查看>>
java中常用方法
查看>>
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
canvas动画
查看>>
4,7周围玩家
查看>>
关于webpack升级过后不能打包的问题;
查看>>
vue - 生命周期
查看>>
SQL Server用户权限详解
查看>>
Python正则表达式
查看>>
Linux进程间通信--命名管道
查看>>
UVa 10970 - Big Chocolate
查看>>