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

迭代器

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

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

复制代码
1
2
3
4
5
6
7
list = [1, 2, 3, 4, 5] # 创建列表 l = iter(list) # 创建迭代器 print(next(l)) # 输出元素(第一个) 1 print(next(l)) # 输出元素(第二个) 2 print(next(l)) # 输出元素(第三个) 3
迭代器也可以使用for循环进行遍历输出所有元素
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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()方法:返回下一个迭代器对象
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 异常来结束迭代。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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()方法时从当前位置继续运行。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 生成斐波那契数列 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生成器内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部