概述
当我们在使用for循环时,即重复运行一个代码块,或者不断迭代容器对象中的元素,比如一些序列对象,列表,字典,元组,甚至文件等,而for循环的本质取出可迭代对象中的迭代器然后对迭代器不断的操作。
一些迭代方法
迭代列表
复制代码
1
2
3
4
5
6
7
8L = [1,2,3,4,5] for element in L: print(str(element) * 3) # 利用enumerate获取索引进行迭代 for i in enumerate(L): print(i)
迭代结果:
复制代码
1
2
3
4
5
6
7
8
9
10
11111 222 333 444 555 (0, 1) (1, 2) (2, 3) (3, 4) (4, 5)
迭代元组
复制代码
1
2
3
4
5
6
7
8L = (1,2,3,4,5) for element in L: print(str(element) * 3) # 利用enumerate获取索引进行迭代 for i in enumerate(L): print(i)
迭代结果:
复制代码
1
2
3
4
5
6
7
8
9
10
11111 222 333 444 555 (0, 1) (1, 2) (2, 3) (3, 4) (4, 5)
迭代字符串
复制代码
1
2
3
4S = 'PYTHON' for s in S: print(s * 3)
迭代结果:
复制代码
1
2
3
4
5
6
7PPP YYY TTT HHH OOO NNN
迭代集合:
复制代码
1
2
3
4G = {'Ruo', 'Data', 'Python'} for g in G: print(g)
迭代结果:
复制代码
1
2
3
4Python Ruo Data
迭代字典
复制代码
1
2
3
4
5
6
7D = { 'name': 'Ruo Data', 'website': 'www.ruodata.com' } for key in D: print(key)
迭代结果:
复制代码
1
2
3name website
迭代文件
复制代码
1
2
3for line in open('ex.txt'): print(line, end='')
迭代结果,即一行一行的打印ex.txt
中的内容:
复制代码
1
2
3
4I love Python ... ...
for循环原理
for循环的实现机制其实就是基于迭代器协议对可迭代对象不断迭代,而迭代器到底是什么呢?
1.迭代器协议是指:对象必须提供一个next
方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration
异常,以终止迭代。
2.迭代器:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()
方法)
3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象。
4. 可以通过__next__
取值。
for 循环在处理这些数据前,会调用 __iter__()
方法,将这些数据转化为一个迭代器,然后调用迭代器的__next__()
方法取值,知道抛出StopIteration
异常,结束迭代。
即我们可以通过手动迭代来模拟for循环:
复制代码
1
2
3
4
5
6
7
8L=[1,2,3] L_I=L.__iter__() try: while True: print(L_I.__next__()) except StopIteration: pass
模拟结果:
复制代码
1
2
3
41 2 3
最后
以上就是顺心大叔最近收集整理的关于python3迭代器之for循环迭代及原理浅析的全部内容,更多相关python3迭代器之for循环迭代及原理浅析内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复