zoukankan      html  css  js  c++  java
  • python之生成器

    在Python中,这种一边循环一边计算的机制,称为生成器:generato

    创建一个生成器

    # g=(x for x in range(100))    #创建一个生成器
    # print(next(g))#用next()调用生成器
    # print(next(g))
    # print(next(g))
    # print(next(g))
    #
    # for i in g:  #通过迭代来调用生成器
    #     print(i)

     或

    生成器保存的是算法,每次调用next()就计算出g的下一个元素的值,直到最后一个元素

    生成器还可以通过函数来实现

    如:斐波拉契数列除第一个和第二个数外,任意一个数都可由前两个数相加得到:

    # def fid(n):
    #     a = 1
    #     b = 1
    #     while n:
    #         yield a  #相当于一个不会停止的return
    #         a,b=b,a+b
    #         n=n-1
    #
    # def fid(max):
    #     n,a,b=0,0,1
    #     while n<max:
    #         yield b
    #         a,b=b,a+b  #赋值语句相当于 t=(b,b+a) a=t[0]  b=t[1]
    #         n=n+1
    
    # for j in fid(10):
    #     print(j)

     

     如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个生成器(generator)

    杨辉三角

    # def yanghui(n):#定义一个函数,函数参数为n
    #     list1=[1]
    #     for i in range(n):  # 循环确定杨辉三角列数
    #         yield list1  # 输出列表list1
    #         list2=[1] 
    #         for j in range(len(list1)-1): # 循环确定list1的下标
    #             list2.append(list1[j]+list1[j+1])#将list1 中相邻两个下标对应的值相加后添加到list2中
    #         list2.append(1)#在list2的末尾添加元素1
    #         list1=list2#将list2的值赋予list1
    # for j in yanghui(10):
    #     print(j)

     

  • 相关阅读:
    linux--menuconfig
    linux--rcs
    linux--VSS/RSS/PSS/USS
    vi编辑器中发现文件中每行都有一个^M字符
    linux umount命令
    Linux mount命令
    Linux rmmod命令
    Linux lsmod命令
    Linux insmod命令
    linux--cpio文件
  • 原文地址:https://www.cnblogs.com/wbf980728/p/14052892.html
Copyright © 2011-2022 走看看