迭代器
引用>一、迭代的概念
迭代器即迭代的工具,那什么是迭代呢?
迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值<>强优点:强>
<李>提供一种统一的,不依赖于索引的迭代方式李> <李>惰性计算,节省内存
<强>缺点:强> 李> <李>无法获取长度(只有在未来完毕才知道到底有几个值)李> <李>一次性的,只能往后走,不能往前退李><强> 1,为何要有迭代器? 强>
对于序列类型:字符串,列表,元组,我们可以使用索引的方式迭代取出其包含的元素。但对于字典,集合,文件等类型是没有索引的,若还想取出其内部包含的元素,则必须找出一种不依赖于索引的迭代方式,这就是迭代器
<强> 2,什么是可迭代对象? 强>
可迭代对象指的是内置有<强> iter >强方法的对象,即obj。<强> iter >强,如下
<代码> . __iter__“你好” . __iter__ (1、2、3) . __iter__ (1、2、3) {a: 1} . __iter__ {' a ', ' b '} . __iter__ 打开(“a.txt”) . __iter__ 代码><强> 3,什么是迭代器对象? 强>
可迭代对象执行obj。<强> iter 强>()得到的结果就是迭代器对象
而迭代器对象指的是即内置有<强> iter >强又内置有下强> <强>方法的对象<代码>文件类型是迭代器对象 打开(“a.txt”) . __iter__ () open (a.txt) .__next__() 代码>二,迭代器对象的使用
<代码> dic={“a”: 1、“b”: 2,“c”: 3} iter_dic=dic.__iter__() #得到迭代器对象,迭代器对象即有__iter__又有__next__,但是:迭代器. __iter__()得到的仍然是迭代器本身 iter_dic.__iter__ () iter_dic #是正确的 print (iter_dic.__next__()) #等同于下(iter_dic) print (iter_dic.__next__()) #等同于下(iter_dic) print (iter_dic.__next__()) #等同于下(iter_dic) #打印(iter_dic.__next__()) #抛出异常抛出StopIteration,或者说结束标志 #有了迭代器,我们就可以不依赖索引迭代取值了 iter_dic=dic.__iter__ () 而1: 试一试: k=next (iter_dic) print (dic [k]) 除了抛出StopIteration: 打破代码>三,循环
<代码> #基于为循环,我们可以完全不再依赖索引去取值了 dic={“a”: 1、“b”: 2,“c”: 3} 在dic k: print (dic [k]) #为循环的工作原理 # 1:执行后的对象的dic.__iter__()方法,得到一个迭代器对象iter_dic # 2:执行下(iter_dic),将得到的值赋值给k,然后执行循环体代码 # 3:重复过程2,直到捕捉到异常抛出StopIteration,结束循环代码>生成器
引用>一、什么是生成器
<代码> #只要函数内部包含有产量关键字,那么函数名()的到的结果就是生成器,并且不会执行函数内部代码 def func (): print(====在第一) 产生1 print(“====比;二”) 收益率2 print(“====在第三”) 产生3 print(====在结束) g=func () 打印(g) # & lt;发电机在0 x0000000002184360>对象函数;代码><强>产量总结强>
1,把函数做成迭代器
2,对比,可以返回多次值,可以挂起/保存函数的运行状态二、三元表达式
<代码> name=输入(“姓名祝辞祝辞:') res=橙恕绻鹡ame==把抢怂埂逼渌白ⅰ? 打印(res) 代码>三,列表解析
优点:方便,改变了编程习惯,可称之为声明式编程
<代码> egg_list=[] 因为我在范围(10): egg_list。追加(“鸡蛋% s ' % i) egg_list=['鸡蛋% s ' %我的范围(10))代码>四、生成器表达式
<代码> # 1,把列表推导式的[]换成()就是生成器表达式 # 2,示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下的蛋,这也是生成器的特性 在在在鸡=('鸡蛋% s ' %我因为我在范围(5)) 在在在鸡 & lt;发电机对象& lt; genexpr>在0 x10143f200> 在在在下一个(鸡) “鸡蛋0 ' 在在在列表(鸡)#因鸡可迭代,因而可以转成列的表 ['鸡蛋1”、“鸡蛋2 ','鸡蛋3 ','鸡蛋4 ',) # 3,优点:省内存,一次只产生一个值在内存中Python开发【第五篇】:Python基础之迭代器,生成器