zoukankan      html  css  js  c++  java
  • 学习python的第十二天

    本节主要内容:

    1. ⽣生成器和⽣生成器函数
    2. 列列表推导式

    ⼀、生成器

    1. 通过⽣生成器函数

    2. 通过各种推导式来实现⽣生成器

    3. 通过数据的转换也可以获取⽣生成器

    send和__next__()区别:

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

    2. send可以给上⼀一个yield的位置传递值, 不能给后⼀一个yield发送值. 在第⼀一次执⾏行行⽣生

    成器代码的时候不能使⽤用send()
    生成器可以使⽤for循环来循环获取内部的元素:

    ⽣生成器可以使⽤用for循环来循环获取内部的元素

    def func():   

    print(111)   

    yield 222   

    print(333)   

    yield 444   

    print(555)   

    yield 666

    gen = func() f

    or i in gen:   

    print(i)    结果: 111 222 333 444 555 666

    二. 列列表推导式, ⽣生成器表达式以及其他推导式

    lst = [] for i in range(1, 15):    lst.append(i) print(lst)
     替换成列列表推导式:

    lst = [i for i in range(1, 15)] print(lst)
     列列表推导式的常⽤用写法:

    [ 结果 for 变量量 in 可迭代对象 if 条件 ]

    后⼀一个知识点: yield from 在python3中提供了了⼀一种可以直接把可迭代对象中的每⼀一个数据作为⽣生成器的结果进⾏行行返回

    def gen():    l

    st = ["⿇花藤", "胡辣汤", "微星牌饼铛", "Mac牌锅铲"]   

    yield from lst

    g = gen() 

    for el in g:

    print(el)

    ⼩小坑: yield from是将列列表中的每⼀一个元素返回. 所以. 如果写两个yield from 并不会产⽣生交替 的效果.

    def gen():    lst = ["⿇花藤", "胡辣汤", "微星牌饼铛", "Mac牌锅铲"]   

    lst2 = ["饼铛还是微星的好", "联想不能煮鸡蛋", "微星就可以", "还可以烙饼"]   

    yield from lst   

    yield from lst2
    g = gen()

    for el in g:   

    print(el)


     

  • 相关阅读:
    减少注入元
    浅谈微服务基建的逻辑
    Linux系统Java环境安装配置
    ASP.NET Core 依赖注入
    C#并发编程实例讲解-概述(01)
    Linux系统从安装开始
    关于C#获取动态的时间差函数
    SQL Server 存储过程
    jQuery选择器大全(48个代码片段+21幅图演示)
    对齐方式
  • 原文地址:https://www.cnblogs.com/DanielYang11/p/9892647.html
Copyright © 2011-2022 走看看