图书馆建设网站注意点,江苏城乡建设教育网站,公司网站是否有必要销售产品,wordpress取消菜单一 迭代器 一 迭代的概念 #迭代器即迭代的工具#xff0c;那什么是迭代呢#xff1f;#迭代是一个重复的过程#xff0c;每次重复即一次迭代#xff0c;并且每次迭代的结果都是下一次迭代的初始值
while True: #只是单纯地重复#xff0c;因而不是迭代print() l[1,2,3]…一 迭代器 一 迭代的概念 #迭代器即迭代的工具那什么是迭代呢#迭代是一个重复的过程每次重复即一次迭代并且每次迭代的结果都是下一次迭代的初始值
while True: #只是单纯地重复因而不是迭代print() l[1,2,3]
count0
while count len(l): #迭代print(l[count])count1 二 为何要有迭代器什么是可迭代对象什么是迭代器对象 1 #1、为何要有迭代器2 对于序列类型字符串、列表、元组我们可以使用索引的方式迭代取出其包含的元素。但对于字典、集合、文件等类型是没有索引的若还想取出其内部包含的元素则必须找出一种不依赖于索引的迭代方式这就是迭代器3 4 #2、什么是可迭代对象5 可迭代对象指的是内置有__iter__方法的对象即obj.__iter__如下6 hello.__iter__7 (1,2,3).__iter__8 [1,2,3].__iter__9 {a:1}.__iter__
10 {a,b}.__iter__
11 open(a.txt).__iter__
12
13 #3、什么是迭代器对象
14 可迭代对象执行obj.__iter__()得到的结果就是迭代器对象
15 而迭代器对象指的是即内置有__iter__又内置有__next__方法的对象
16
17 文件类型是迭代器对象
18 open(a.txt).__iter__()
19 open(a.txt).__next__()
20
21
22 #4、注意
23 迭代器对象一定是可迭代对象而可迭代对象不一定是迭代器对象 三 迭代器对象的使用 1 dic{a:1,b:2,c:3}2 iter_dicdic.__iter__() #得到迭代器对象迭代器对象即有__iter__又有__next__但是迭代器.__iter__()得到的仍然是迭代器本身3 iter_dic.__iter__() is iter_dic #True4 5 print(iter_dic.__next__()) #等同于next(iter_dic)6 print(iter_dic.__next__()) #等同于next(iter_dic)7 print(iter_dic.__next__()) #等同于next(iter_dic)8 # print(iter_dic.__next__()) #抛出异常StopIteration或者说结束标志9
10 #有了迭代器我们就可以不依赖索引迭代取值了
11 iter_dicdic.__iter__()
12 while 1:
13 try:
14 knext(iter_dic)
15 print(dic[k])
16 except StopIteration:
17 break
18
19 #这么写太丑陋了需要我们自己捕捉异常控制nextpython这么牛逼能不能帮我解决呢能请看for循环 四 for循环 #基于for循环我们可以完全不再依赖索引去取值了
dic{a:1,b:2,c:3}
for k in dic:print(dic[k])#for循环的工作原理
#1执行in后对象的dic.__iter__()方法得到一个迭代器对象iter_dic
#2: 执行next(iter_dic),将得到的值赋值给k,然后执行循环体代码
#3: 重复过程2直到捕捉到异常StopIteration,结束循环 五 迭代器的优缺点 #优点- 提供一种统一的、不依赖于索引的迭代方式- 惰性计算节省内存
#缺点- 无法获取长度只有在next完毕才知道到底有几个值- 一次性的只能往后走不能往前退 二 生成器 一 什么是生成器 #只要函数内部包含有yield关键字那么函数名()的到的结果就是生成器并且不会执行函数内部代码def func():print(first)yield 1print(second)yield 2print(third)yield 3print(end)gfunc()
print(g) #generator object func at 0x0000000002184360 二 生成器就是迭代器 g.__iter__
g.__next__
#2、所以生成器就是迭代器因此可以这么取值
resnext(g)
print(res) 转载于:https://www.cnblogs.com/fu-yong/p/8178532.html