python迭代器使用_Python学习笔记之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最新的技术,前景,学习需要留言的小细节

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值