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

    一.列表生成式

    a = [i*2 for i in range(10)]

    1.不用中间值进行赋值

      斐波拉齐数列

    a,b=b,a+b

       注意:不是这样理解

          a=b  a=1,b=2,a=b,a=2,b=a+b=4

      而是:t=(b,a+b) //t是一个tuple

        a=t[0]   b=t[1]

    二.生成器

      生成器的实质:按一种规律或有规则的方式,当用户需要该数据时通过__next__()进行生成,不能进行切片。

      特点:占用的内存空间小,如:生成10000个数,用列表是将每一个数据写入内存后,用户才能使用,但生成器是要用时才生成

      生成器创建方法:

      1.  a = (i *2 for i in range (10))

      2.函数方式用yield,此时的函数不在是函数而是一个生成器

      yield 的作用:停止并返回yield右边的值,再跳出去执行外面的代码,当外面用到__next__(),后又会跳回到生成器中的yield处执行下部分。

    def fib(max):
        n,a,b=0,0,1
        while n < max:
        yield b
        a,b=b,a+b
        n=n+1

          3.send(信息)    有__next__()的作用同时还有将send中的信息发给yield

    import time
    def comsuer(name):
        print("%s 准备开吃了"%name)
        while True:
            ret=yield
            print("[%s]正在吃[%s]的包子"%(name,ret))
    
    
    a=["豆沙馅","白菜馅","猪肉馅","韭菜馅"]
    
    
    def produce(name):
        c=comsuer("小芳")
        c1=comsuer("小红")
        c.__next__()
        c1.__next__()
        print("%s正在包子,,,"%name)
        for i in a:
            time.sleep(1)
            c.send(i)
            c1.send(i)
    
    
    produce("高佳雪")
  • 相关阅读:
    freebsd ports update url
    Cisco交换机里IP和MAC地址互查找出对应端口
    实现不同vlan间的相互通信方法一:单臂路由
    文件共享③Samba实例
    RHEL6基础四十九之RHEL文件(夹)权限进阶篇
    windows下查找指定端口被哪个程序占用
    DNSmasq – 配置DNS和DHCP
    dnsmasq多vlan配置
    dnsmasq.conf 配置
    windows2003 DHCP中批处理绑定IP与MAC
  • 原文地址:https://www.cnblogs.com/gjx1212/p/11581091.html
Copyright © 2011-2022 走看看