博主信息
Sky
博文
291
粉丝
0
评论
0
访问量
7315
积分:0
P豆:617

Python自学笔记--迭代器与生成器、yield、函数

2021年10月16日 00:25:03阅读数:10博客 / Sky

迭代器 iter() 和 next()方法

list=[1,2,3,4]
it = iter(list)      # 创建迭代器对象

for x in it:         # print (next(it)) 输出迭代器的下一个元素
   print (x, end=" ")

while True:
   try:
       print (next(it))
   except StopIteration:
       sys.exit()

▲注:StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 __next__() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。

在 20 次迭代后 触发 StopIteration 异常来结束迭代

class MyNumbers:
   def __iter__(self):
       self.a = 1
       return self

   def __next__(self):
       if self.a <= 20:
           x = self.a
           self.a += 1
           return x
       else:
           raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
   print(x)

Python 定义函数使用 def 关键字,卖手游地图一般格式如下:

def 函数名(参数列表):
   函数体

使用带有 yield 的函数实现斐波那契数列

import sys
def fab(max):
   n, a, b = 0, 0, 1
   while True :
       if (n > max) :
           return
       yield b  # 使用 yield
       a, b = b, a + b
       n = n + 1
f = fab(10)
while True:
   try:
       print (next(f),end=" ")
   except StopIteration:
       sys.exit()


版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论