迭代器
字符串,列表或元组对象都可用于创建迭代器,创建一个迭代器对象:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Jia ShiLin
list = [1,2,3,4,5]
it = iter(list)
print(next(it))
print(next(it))
需要手动实现和使用iter()和next()函数
生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。具有yield关键字的函数都是生成器,yield可以理解为return,返回后面的值给调用者。不同的是return返回后,函数会释放,而生成器则不会。在直接调用next方法或用for语句进行下一次迭代时,生成器会从yield下一句开始执行,直至遇到下一个yield
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器
yield关键字自动的生成iter()和next()函数
#!/usr/bin/python3
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
执行以上程序,输出结果如下:
0 1 1 2 3 5 8 13 21 34 55