您的位置:首页 > 编程语言 > Python开发

python3 迭代器实现斐波那契数列

2017-11-14 21:44 260 查看
# 先写个迭代器文件 iterator.py

class Fib:
def __init__(self):
self.n1 = 0
self.n2 = 1
def __next__(self):
self.n1, self.n2 = self.n2, self.n1 + self.n2
return self.n1
def __iter__(self):
return self

# 用 for 循环从迭代器中取值
>>> from iterator import Fib
>>> fib = Fib()   # 实例化对象
>>> for i in fib:
...     if i > 100:
...         print(i)
...         break    # 加上 break, 不然会一直执行下去
...
144
>>> next(fib)
233
>>> next(fib)
377

# 迭代器对象需要实现 __iter__ 方法和 next 方法
# python3 是 __next__ 方法,python3 的内建函数 next() 可以访问这个方法
# python3 中可以用 next(it) 取值,3以前用 it.next()

# 内建函数 iter 可以从可迭代对象获取迭代器
>>> st = 'abcdefg'
>>> it = iter(st)
>>> it
<str_iterator object at 0x7f5aaf2fecc0>

# 用 list 可以把迭代器转换成列表(需要切片时会用到)
>>> list(it)
['a', 'b', 'c', 'd', 'e', 'f', 'g']
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: