内容简介:当我们在使用for循环时,即重复运行一个代码块,或者不断迭代容器对象中的元素,比如一些序列对象,列表,字典,元组,甚至文件等,而for循环的本质取出可迭代对象中的迭代器然后对迭代器不断的操作。迭代结果:迭代结果:
当我们在使用for循环时,即重复运行一个代码块,或者不断迭代容器对象中的元素,比如一些序列对象,列表,字典,元组,甚至文件等,而for循环的本质取出可迭代对象中的迭代器然后对迭代器不断的操作。
一些迭代方法
迭代列表
L = [1,2,3,4,5] for element in L: print(str(element) * 3) # 利用enumerate获取索引进行迭代 for i in enumerate(L): print(i) 复制代码
迭代结果:
111 222 333 444 555 (0, 1) (1, 2) (2, 3) (3, 4) (4, 5) 复制代码
迭代元组
L = (1,2,3,4,5) for element in L: print(str(element) * 3) # 利用enumerate获取索引进行迭代 for i in enumerate(L): print(i) 复制代码
迭代结果:
111 222 333 444 555 (0, 1) (1, 2) (2, 3) (3, 4) (4, 5) 复制代码
迭代字符串
S = 'PYTHON' for s in S: print(s * 3) 复制代码
迭代结果:
PPP YYY TTT HHH OOO NNN 复制代码
迭代集合:
G = {'Ruo', 'Data', 'Python'} for g in G: print(g) 复制代码
迭代结果:
Python Ruo Data 复制代码
迭代字典
D = { 'name': 'Ruo Data', 'website': 'www.ruodata.com' } for key in D: print(key) 复制代码
迭代结果:
name website 复制代码
迭代文件
for line in open('ex.txt'): print(line, end='') 复制代码
迭代结果,即一行一行的打印 ex.txt
中的内容:
I love Python ... ... 复制代码
for循环原理
for循环的实现机制其实就是基于迭代器协议对可迭代对象不断迭代,而迭代器到底是什么呢?
-
迭代器协议是指:对象必须提供一个
next
方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration
异常,以终止迭代。 -
迭代器:实现了迭代器协议的对象(如何实现:对象内部定义一个
__iter__()
方法) -
协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象。
-
可以通过
__next__
取值。
for 循环在处理这些数据前,会调用 __iter__()
方法,将这些数据转化为一个迭代器,然后调用迭代器的 __next__()
方法取值,知道抛出 StopIteration
异常,结束迭代。
即我们可以通过手动迭代来模拟for循环:
L=[1,2,3] L_I=L.__iter__() try: while True: print(L_I.__next__()) except StopIteration: pass 复制代码
模拟结果:
1 2 3 复制代码
以上所述就是小编给大家介绍的《python3迭代器之for循环迭代及原理浅析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 迭代器萃取与反向迭代器
- 浅谈python可迭代对象,迭代器
- 可迭代对象,迭代器(对象),生成器(对象)
- 终于把动态规划与策略迭代、值迭代讲清楚了
- 终于把动态规划与策略迭代、值迭代讲清楚了
- 搞清楚 Python 的迭代器、可迭代对象、生成器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++标准模板库编程实战
Ivor Horton / 郭小虎、程聪 / 2017-1
《C++标准模板库编程实战》介绍最新的C++14标准的API、库和扩展,以及如何将它们运用到C++14程序中。在书中,作者Ivor Horton 则阐述了什么是STL,以及如何将它们应用到程序中。我们将学习如何使用容器、迭代器,以及如何定义、创建和应用算法。此外,还将学习函数对象和适配器,以及它们的用法。 阅读完本书之后,你将能够了解如何扩展STL,如何定义自定义类型的C++组件,你还将能够......一起来看看 《C++标准模板库编程实战》 这本书的介绍吧!