首页 > 其他 > 详细

生成器的简单使用

时间:2019-12-16 00:56:51      阅读:94      评论:0      收藏:0      [点我收藏+]
# 生成器函数 函数里面只要有yield关键字,就是一个生成器函数
# 生成器对象也是实现了迭代器协议了的
def gen_func():
    yield 1
    yield 2
    yield 3


def func():
    return 1


# 斐波拉契函数  a1 + a2 = a3
# 0,1,1,2,3,5,8,13
def fib(index):
    ‘‘‘
    :param index:   第index个数
    :return:
    ‘‘‘
    if index == 0:
        return 0
    elif index < 3:
        return 1
    else:
        return fib(index - 1) + fib(index - 2)


def fib1(index):
    # 这个方式,如果result_list中数据太多,内存撑爆
    result_list = []
    n, a, b = 0, 0, 1
    while n < index:
        result_list.append(b)
        a, b = b, a + b
        n += 1
    return result_list


def gen_fib(index):
    # 使用生成器不存在内存撑爆的问题,因为数据是计算一个取一个的
    n, a, b = 0, 0, 1
    while n < index:
        yield b
        a, b = b, a + b
        n += 1


if __name__ == __main__:
    # gen = gen_func()  # 返回的是一个生成器对象, 这个对象在python编译子节码就生成了
    # for g in gen:
    #     print(g)

    # 正常的函数
    # re = func()


    print(fib(10))
    print(fib1(10))
    gen = gen_fib(10)
    for g in gen:
        print(g, end=,)

生成器的简单使用

原文:https://www.cnblogs.com/z-qinfeng/p/12046434.html

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