• 26.列表生成式,生成器,斐波那契数列



    列表生成式
    a=[1,2,3,4,5,6,7,8,9]
    a=[i+1 for i in a]
    print(a)


    生成器 generator
    在python中,这种一边循环,一边计算后面元素的机制,称为生成器
    列表生成式 [i*i for i in range(10)] 列表元素直接生成,占内存空间
    生成器 (i*i for i in range(10))
    不生成列表元素,而是生成一个器物,只是生成了一个算法,只有调用一次才产生一个元素。next(),惰性运算,元素next完会报错,而for循环调用生成器,调用完不会报错



    斐波那契数列
    除第一个和第二个数以外,其余的数都是由前一个数和后一个数相加得到。
    a=0
    b=1
    count=0
    while count<20:
    temp=a #在给新a赋值之前,先把旧a存储起来,以便b的计算。b=a(旧a# )+b
    a=b
    b=temp+b
    count+=1
    print(a,b)


    斐波那契数列函数
    def fib(n):
    a = 0
    b = 1
    count = 0
    while count < n:
    temp = a # 在给新a赋值之前,先把旧a存储起来,以便b的计算。b=a(旧a# )+b
    a = b
    b = temp + b
    print(a, b)
    count += 1


    fib(20)
    #斐波那契数列生成器
    def fib(n):
    a = 0
    b = 1
    count = 0
    while count < n:
    temp = a # 在给新a赋值之前,先把旧a存储起来,以便b的计算。b=a(旧a# )+b
    a = b
    b = temp + b
    yield b #暂停,并返回b,直到下一次next调用,执行yield后面的程序
    count += 1
    # print(a, b)

    f=fib(20)
    print(f.__next__())
    print(f.__next__())
    print(f.__next__())
    print(f.__next__())
    print(f.__next__())
    print("---do something else---")# 可以中断函数,执行一段无函数无关代码,然后下次next 继续执行函数
    print(f.__next__())
    print(f.__next__())
  • 相关阅读:
    2013-2014-2(复变函数56)
    2015-2016-1(实变函数56)
    2014-2015-2(常微分方程64, 数学分析提高64)
    2015-2016-2(点集拓扑56, 点集拓扑56)
    2016-2017-2(点集拓扑56, 点集拓扑56)
    2016-2017-1(实变函数56, 点集拓扑56)
    2017-2018-1(实变函数56, 点集拓扑56)
    2013-2014 指导2014届毕业生8名(48)
    2015-2016 指导2016届毕业生8名(48)
    2014-2015 指导2015届毕业生8名(48)
  • 原文地址:https://www.cnblogs.com/xh716/p/11570584.html
Copyright © 2020-2023  润新知