我是靠谱客的博主 幸福小霸王,最近开发中收集的这篇文章主要介绍Python基础笔记——迭代器和生成器迭代器创建迭代器Stoplteration生成器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

迭代器

  1. 迭代是python最强大的功能之一,是访问集合元素的一种方式
  2. 迭代是一个可以记住遍历位置的对象
  3. 迭代器的对象是从集合的第一个对象开始访问,知道访问结束,且迭代器只前不退
  4. 迭代器的基本方法:iter() 和 next()

可迭代对象的本质就是可以向我们提供一个这样的中间“人”即迭代器帮助我们对其进行迭代遍历使用。
可迭代对象通过__iter__方法向我们提供一个迭代器,我们在迭代一个可迭代对象的时候,实际上就是先获取该对象提供的一个迭代器,然
后通过这个迭代器来依次获取对象中的每一个数据。

list = [1, 2, 3, 4, 5]
# 创建列表
l = iter(list)	# 创建迭代器
print(next(l))	# 输出元素(第一个)	1
print(next(l))	# 输出元素(第二个)	2
print(next(l))	# 输出元素(第三个)	3
迭代器也可以使用for循环进行遍历输出所有元素
list = [1, 2, 3, 4, 5]	# 创建列表
l = iter(list)	# 创建迭代器
for i in l:
# 循环遍历
print(i, end=' ')	# 输出循环后数据,end站位空格
# 结果:1 2 3 4 5
# next函数
list = [1, 2, 3, 4, 5]	# 定义列表
l = iter(list)	# 创建迭代器
while True:
# 无限循环
try:
# 判断
print(next(l))	# 输出
except StopIteration:	# 防止报错StopIteration
sys.exit()
# 结果:1 2 3 4 5

创建迭代器

  • 创建一个迭代器需要在类中使用__iter__()与__nect__()方法。注意:是两个_
  • init()方法:返回一个特殊的迭代器对象,这个对象实习了__next()__方法,并且通过Stoplteration异常提示完成
  • next()方法:返回下一个迭代器对象
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
# 结果:1 2 3 4

Stoplteration

StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 next() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。
class MyNumbers:	# 定义函数
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 6:	# 定义循环次数
x = self.a
self.a += 1
return x
else:
raise StopIteration	# 报蹉返回
myclass = MyNumbers()	# 传递函数值
myiter = iter(myclass) # 定义迭代器
for x in myiter:	# 循环遍历并输出
print(x)
# 结果:1 2 3 4 5 6

生成器

  • python中使用yield方法定义生成器,只能用于迭代操作,简单说就是生成一个迭代器
  • 运行生成器时,遇到yield函数会暂停并保存当前信息,在下一次执行next()方法时从当前位置继续运行。
# 生成斐波那契数列
import sys	# 导入sys
def fibonacci(n):
# 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0	# 定义数
while True:
# 无限循环
if (counter > n):	# 循环判断
return
# 返回空
yield a
# 生成器
a, b = b, a + b	# 定义
counter += 1	# 自增
f = fibonacci(10)
# f 是一个迭代器,由生成器返回生成
while True:# 无限循环
try:	# 无错误信息
print(next(f), end=" ")	# 输出结果
except StopIteration:	# r如要报StopIteration错
sys.exit()

斐波那契数列(Fibonacci sequence),又称黄金分割数列、兔子数列,是数学家列昂纳多·斐波那契于1202年提出的数列。斐波那契数列为1、1、2、3、5、8、13、21、34……此数列从第3项开始,每一项都等于前两项之和,递推公式为F(n)=F(n-1)+F(n-2),n≥3,F(1)=1,F(2)=1

最后

以上就是幸福小霸王为你收集整理的Python基础笔记——迭代器和生成器迭代器创建迭代器Stoplteration生成器的全部内容,希望文章能够帮你解决Python基础笔记——迭代器和生成器迭代器创建迭代器Stoplteration生成器所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部