欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-22 10:06:30
一、迭代器相关迭代器(iterator)有时又称游标(cursor)是程序设计的软件设计模式,可在容器(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器的内容。 关键点:遍访(遍历?)容器 写到这里 给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数 ......



一、迭代器相关
迭代器(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最新的技术,前景,学习需要留言的小细节
本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。