生成器与迭代器

Posted 沄持

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器与迭代器相关的知识,希望对你有一定的参考价值。

生成器

def func():
    print("111")
    yield 1
    print("222")
    yield 3
    print("333")
    yield 3

ret=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 +=1
ret=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 += 1

f = fibonacci(10)
# 自己写迭代器
# import sys
# while True:
#     try:
#         print (next(f), end=" ")
#     except StopIteration:
#         sys.exit()

# 内置迭代器
for i in f:
    print(i,end=" ")

 

以上是关于生成器与迭代器的主要内容,如果未能解决你的问题,请参考以下文章

Python中迭代器和生成器的区别与联系

python 基础篇 13 迭代器与生成器

python-迭代器与生成器1

python的生成器与迭代器和可迭代对象

函数进阶--生成器与迭代器

Python迭代器与生成器