zoukankan      html  css  js  c++  java
  • 生成器,推导式,..

    1.生成器

    def func():
    print("111")
    yield 222
    print("333")
    yield 444
    print(func())


    
    
    
    
    
    1 def func():
    2     print("111")
    3     yield 222
    4 ret=func()
    5 res=ret.__next__()
    6 
    7 print(res)

    这里ret=fun 不会执行函数,拿到的是生成器  有了生成器才可以进行下一个  

    1 def cloth():
    2     for i in range(0,10000):
    3         yield "衣服"+str(i)
    4 cl=cloth()
    5 print(cl.__next__())
    6 print(cl.__next__())
    7 print(cl.__next__())

    这里为什么要用到生成器呢 以为他的惰性 如果一次性出了全部的数字,那么多的内存会没有地方反而占用更大空间

    由于和迭代器一样的属性,用一个出一个才会是最完美的方法

    2.send

     1 def eat():
     2     print("我吃什么啊")
     3     a=yield "馒头"
     4     print("a",a)
     5     b=yield "大饼"
     6     print("b",b)
     7     c=yield  "韭菜盒子"
     8     print("c",c)
     9     yield  "gameover"
    10 gen=eat()
    11 ret1=gen.__next__()
    12 print(ret1)
    13 ret2=gen.send("胡辣汤")
    14 print(ret2)
    15 ret3=gen.send("狗粮")
    16 print(ret3)
    17 ret4=gen.send("猫粮")
    18 print(ret4)

    send()和__next__() 的区别:

    1.send 和next()都是要生成器走向下一次

    2.send可以给上一个yield 的位置传递值,不能给最后一个yield 发送值,在第一次执行生成器代码的时候不能使用seng()

    3.生成器可以使用for 循环来获取内部元素

     1 def func():
     2     print(111)
     3     yield 222
     4     print(333)
     5     yield 444
     6     print(555)
     7     yield 666
     8 gen = func()
     9 for i in gen:
    10     print(i)

    2.列表推导式

    一句话 生成一个列表

    语法:[  结果    for 循环   ]

    1 lst=[i for  i  in  range(1,15)]
    2 print(lst)

    生成器表达式

    1 gen=(i for i in range(15))
    2 print(gen)

    生成器表达式和列表推导式的语法基本上一样的,只是把[]换成{}

    区别:

    1.列表推导式比较耗内存,一次加载,生成器表达式几乎不占用内存,

    2.得到的值不一样,生成器只有在访问的时候才取值,说白了,你找他要他才给你值,不找他要,是不会执行的

  • 相关阅读:
    js调用后台方法
    Js 实现trim方法
    Service获取客户端IP地址(java)
    ASP.NET中页面传值
    Asp.net 实现选择文件批量下载
    js调用后台代码
    获取webservice客户端IP地址 (C# java )
    使 WebBrowser 更简单的新加和执行 js, 可安装 jQuery 脚本的 C# 开源代码 IEBrowse...
    Mac下各种网络命令的使用
    Java关键字
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/9469675.html
Copyright © 2011-2022 走看看