python之迭代器
迭代器:
一、迭代器的概念?
重复的过程称为迭代,每次重复即一次迭代,并且每次迭代的结果是下一次迭代的初始值
二、可迭代对象:
凡是对象有__iter__方法,即为可迭代对象
可迭代对象:字符窜、列表、元祖、字典、集合、文件。
注:文件就是迭代器,迭代器是迭代器,生成器是迭代器
三、什么是迭代对象:
1、有__iter__,执行得到仍然是迭代器本身
2、有__next__,本身
四、判断迭代器依据:
isinstance(s,Iterable)
文件是迭代器
其它是可迭代器
五、迭代器优缺点:
优点:
1、提供了一种统一的(不依赖于索引的)迭代方式
2、迭代器本身,比起其它数据类型更省内存
缺点:
1、一次性,只能往后走,不能回退,不如索引取值灵活
2、无法预知什么时候取值结束,即无法预知长度
生成器:
1、在函数内部包含yield关键,那么该函数执行的结果是生成器
2、yield的功能:(1)、把函数的结果生产迭代器(以一种优雅的方式封装好__iter__,__next__)
(2)、函数暂停与再继续运行的状态是由yield
3、yield与return的比较?
相同:都有返回值的功能
不同:return只能返回一次之,yield能返回多个值
4、raise可以抛出异常
注:生成器就是一个迭代器
三元表达式:
x=10
'ok' if x>3 else 'no'
列表解析:
l2=['egg%s' %i1 for i1 in range(11) if i1>5]
生成器表达式:
l3=('egg%s' %i1 for i1 in range(11) if i1>5)
浙公网安备 33010602011771号