python3-004 迭代器和生成器
所属分类 python
浏览量 575
迭代器与生成器
迭代 访问集合
从集合的第一个元素开始访问,直到所有的元素被访问完结束
迭代器只能往前不会后退
迭代器 两个基本的方法 iter() 和 next()
list = [1,2,3]
it = iter(list)
print(next(it))
print(next(it))
print(next(it))
# StopIteration
print(next(it))
it = iter(list)
for i in it:
print(i,end=" ")
把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__()
__iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成
__next__() 方法 返回下一个元素
创建一个返回数字的迭代器,初始值为 1,逐步递增 1
class MyInts:
def __iter__(self):
self.value = 0
return self
def __next__(self):
current = self.value
self.value += 1
if current >= 3:
raise StopIteration
return current
myInts = MyInts()
it = iter(myInts)
print(next(it))
for i in it:
print(i,end=" ")
使用 yield 的函数被称为生成器 generator
生成器是一个返回迭代器的函数,只能用于迭代操作,生成器就是一个迭代器
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值,
并在下一次执行 next() 方法时从当前位置继续运行
def fab(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
for n in fab(5):
print n
上一篇
下一篇
python3-001 基础语法
python3-002 基本数据类型
python3-003 条件和循环
python3-005 函数
python3 str 内置函数调用错误
python3-006 输入输出