zoukankan      html  css  js  c++  java
  • 生成器的简单使用

    # 生成器函数 函数里面只要有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=',')
  • 相关阅读:
    Python 初识爬虫-**机场出港业务
    Python 基础学习之字典
    Python 基础学习之if语句
    初识 超级账本
    搭建element-ui Vue结构
    回归
    Gin框架body参数获取
    log4go折腾
    go获取当前执行的位置程序
    mybatis generator 整合lombok
  • 原文地址:https://www.cnblogs.com/z-qinfeng/p/12046434.html
Copyright © 2011-2022 走看看