目录
迭代器Iterator
迭代器是访问可迭代对象的工具(对象)
什么是迭代器
迭代器是指用iter(obj)函数返回的对象(实例)
迭代器可以用next(it)函数获取可迭代对象的数据
迭代器相关函数
iter(iterable)从可迭代对象中返回一个迭代器,
iterable 必须是一个能提供一个迭代器的对象
next(iterator) 从迭代器iterator中获取下一个记录,
如果无法获取下一条记录,则触发StopIreration异常通知
说明:
迭代器只能往前取值,不能后退
#示例:
L = [2,3,5,7]
it = inter(L) #让可迭代对象L提供一个迭代器
next(it) # 2
next(it) # 3
next(it) # 5
next(it) # 7
next(it) # StopIteration 异常通知
It = iter(range(1,10,3))
next(it) # 1
next(it) # 4
next(it) # 7
next(it) # StopIteration
#示例:
用while 语句遍历列表L中的全部元素
L = [2,3,5,7]
见iterator.py
L = [2,3,5,7]
it = iter(L)
while True:
try:
x = next(it)
print(x)
except StopIteration:
break
练习:
有一个集合:
xiyou = {'唐僧','悟空','八戒','沙僧'}
用for 语句来遍历所有元素如下:
for x in xiyou:
print(x)
else:
print("遍历结束")
请将上面的for 语句改写为while语句及迭代器实现
xiyou = {'唐僧','悟空','八戒','沙僧'}
it = iter(xiyou)
while True:
try:
x = next(it)
print(x)
except StopIteration:
print("遍历结束")
break
生成器 Generator(python 2.5 及以后)
什么是生成器
生成器是能够动态提供数据的对象,生成器对象也是可迭代对象
生成器有两种:
1.生成器函数
2.生成器表达式
生成器函数定义:
含有yield语句的函数是生成器函数,此函数被调用将返回一个生成器对象
注:yield 翻译为(产生或生成)
yield 语句
语法:
yield 表达式
说明:
yield 用于def 函数中,目的是将此函数作为生成器函数使用
yield 用来生成数据,供迭代器的next(it) 函数使用
生成器函数说明: