zoukankan      html  css  js  c++  java
  • 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__())
  • 相关阅读:
    ssh 免密
    SCALA XML pattern attrbute(属性)
    数据库分区的概念
    Intellij IDEA 快捷键整理
    笔记--Linux
    netstat
    笔记--MySQL相关操作
    ip地址
    使用ASMCMD管理Oracle ASM
    使用RMAN执行Oracle ASM数据迁移
  • 原文地址:https://www.cnblogs.com/xh716/p/11570584.html
Copyright © 2011-2022 走看看