python3迭代器之for循环迭代及原理浅析

栏目: Python · 发布时间: 5年前

内容简介:当我们在使用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循环的实现机制其实就是基于迭代器协议对可迭代对象不断迭代,而迭代器到底是什么呢?

  1. 迭代器协议是指:对象必须提供一个 next 方法,执行该方法要么返回迭代中的下一项,要么就引起一个 StopIteration 异常,以终止迭代。

  2. 迭代器:实现了迭代器协议的对象(如何实现:对象内部定义一个 __iter__() 方法)

  3. 协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象。

  4. 可以通过 __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循环迭代及原理浅析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

可视化未来

可视化未来

[美] 埃雷兹·艾登、[法] 让-巴蒂斯特·米歇尔 / 王彤彤、沈华伟、程学旗 / 浙江人民出版社 / 2015-9 / 54.90元

科学的传播速度有多快?今时今日我们很少谈论上帝了吗?人们什么时候开始用“having sex” 而不用“making love”? 史上的人是在哪岁成名的?语法的变化速度到底有多快?哪些作家被纳粹审查得最彻底? “donut” 什么时候开始取代“doughnut”? 我 们能否预测人类未来?比尔·克林顿和花椰菜哪个更出名? 《可视化未来》一书的两位作者通过与“谷歌图书”的合作,得以有机会研究......一起来看看 《可视化未来》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试