我是靠谱客的博主 坚强枕头,最近开发中收集的这篇文章主要介绍python迭代器原理_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函数等)使用迭代器协议访问对象。可以通过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

最后

以上就是坚强枕头为你收集整理的python迭代器原理_python3迭代器之for循环迭代及原理浅析的全部内容,希望文章能够帮你解决python迭代器原理_python3迭代器之for循环迭代及原理浅析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部