首页 > 其他 > 详细

生成器与迭代器

时间:2016-09-02 14:41:25      阅读:180      评论:0      收藏:0      [点我收藏+]

生成器

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=" ")

 

生成器与迭代器

原文:http://www.cnblogs.com/maxgongzuo/p/5833381.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!