Python学习笔记之Python迭代器正确使用方法详解

吃可爱长大的小学妹 提交于 2020-03-22 14:34:33



一、迭代器相关
迭代器(iterator)有时又称游标(cursor)是程序设计的软件设计模式,可在容器(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器的内容。

关键点:遍访(遍历?)容器  写到这里 给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,这里有资深程序员分享以前学习心得,学习笔记,还有一线企业的工作经验,且给大家精心整理一份python零基础到项目实战的资料,每天给大家讲解python最新的技术,前景,学习需要留言的小细节

二、迭代器特点
1.迭代器可以从集合的第一个数据开始访问数据,直到最后一个

2.迭代器只可向前访问,不能倒退(next()方法)

3.迭代器的两个基本方法:next()、iter()

三、Python中的迭代器
迭代器的两个基本方法:next()、iter()

1.获取String类型的迭代器,while遍历

a, i = "Baldwin", 0
it = iter(a)
while i < len(a):
print(next(it), end=" ")
i += 1
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
B a l d w i n
Process finished with exit code 0
2.for遍历

a = "Baldwin"
it = iter(a)
for a in it:
print(a,end=" ")
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
B a l d w i n
Process finished with exit code 0
四、创建迭代器
本段默认读者有面向对象的理解基础

如果我们想把一个类当做迭代器来使用,我们最基础的要实现__iter__() 与 __next__() 两个方法。

__iter__():返回一个迭代器对象,并在这个迭代器对象中实现了__next__()方法

__next__():在Python2中,这个方法名为next(),这个方法会返回下一个迭代器class NumbersForIt:

def __iter__(self): # 创建 __iter__
self.a = 1
return self

def __next__(self): # 创建 __next__
b = self.a
self.a += 1
return b


numbwes = NumbersForIt()
it = iter(numbwes)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py

Process finished with exit code 0
五、生成器创建迭代器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。

def generator():
a = 1
while True:
yield a
a += 1


it, b = generator(), 0
while b < 10:
print(next(it), end=" ")
b += 1
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
1 2 3 4 5 6 7 8 9 10
Process finished with exit code 0
使用generator实现斐波那契数列

def generator():
a, b = 1, 1
while True:
yield a
a, b = b, a + b


it, m = generator(), 0
while m < 10:
print(next(it), end=" ") # 此时我们获取到的是上面a的值
m += 1
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
1 1 2 3 5 8 13 21 34 55
Process finished with exit code 0
六、总结
1.无论在哪一种语言中,迭代器的正确使用都很重要

2.yield的使用能够快速创建一个迭代器,需要注意的是,要在while中添加正确的迭代规则

最后,给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,这里有资深程序员分享以前学习心得,学习笔记,还有一线企业的工作经验,且给大家精心整理一份python零基础到项目实战的资料,每天给大家讲解python最新的技术,前景,学习需要留言的小细节
本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!