首页 > 代码库 > 生成器与迭代器

生成器与迭代器

生成器

def func():    print("111")    yield 1    print("222")    yield 3    print("333")    yield 3ret=func()print(ret)  #具有生成指定条件的数据能力的对象,进行循环的时候才会逐个生成数据r1=ret.__next__()    #进入函数找到yield,获取yield后面的数据print(r1)r2=ret.__next__()print(r2)r3=ret.__next__()print(r3)

 

迭代器

def myrange(arg):   #与内置函数xrange功能一致    start=0    while True:        if start>arg:            return        yield start        start +=1ret=myrange(3)for item in ret:    #迭代器    print(item,end=" ")print("")

 

例子

def fibonacci(n):   #生成器函数 - 斐波那契    a, b, counter = 0, 1, 0    while True:        if (counter > n):            return        yield b        a, b = b, a + b        counter += 1f = fibonacci(10)# 自己写迭代器# import sys# while True:#     try:#         print (next(f), end=" ")#     except StopIteration:#         sys.exit()# 内置迭代器for i in f:    print(i,end=" ")

 

生成器与迭代器