栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python3迭代器之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
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号