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

MG_Lee

迭代器 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()

关于yield:
https://www.runoob.com/w3cnot...
参考:
Python3 迭代器与生成器|菜鸟教程
Python3 函数|菜鸟教程

阅读 148
1 声望
0 粉丝
0 条评论
1 声望
0 粉丝
文章目录
宣传栏