zoukankan      html  css  js  c++  java
  • python基础 day13 生成器,列表推导式、生成器表达式

    一、今日内容大纲
    1、生成器 :生成器的本质就是迭代器
    获取生成器的三种方式
    生成器函数:
    #生成器
    def func():
    print(1)
    print(2)
    yield 3
    yield 4
    ret = func()
    print(next(ret))
    print("_________")
    print(next(ret))
    # print(next(ret))
    """
    一个next 对应一个yield,当next比yield多时,报错
    """
    return与yield区别:
    return:一个函数中只存在一个return,,并且当遇到return时,就结束函数,并且给函数的执行者返回值
    yield:只要函数中有yield,那么它就是生成器函数,生成器函数中可以存在多个yield,一个yield对应一个next
    生成器表达式
    python内部提供的一些
    yield
    yield return
    yield from
    生成器表达式

    2、生成器表达式,列表推导式
    列表推导式:用一行代码构建一个比较复杂有规律的列表
    l1 = [i for i in range(1,11,2)]
    两种模式: 循环模式:{变量(加工后) for 变量 in interable}
    筛选模式:{变量(加工后) for 变量 in interable if 条件}
    生成器表达式:
    """
    生成器表达式
    与列表推导式写法几乎一摸一样,有筛选模式和循环模式,写法上面只有一个不同
    []——》()
    """
    # print([i**2 for i in range(1,11)]) #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    # print((i for i in range(1,11))) #<generator object <genexpr> at 0x000001E12F7D2360>
    # obj = (i for i in range(1,11))
    # for i in range(1,11):
    # print(next(obj))
    l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"]
    l2 = [i for i in range(2,11)] + list("JQKA")
    print(l2)
    print( [i for i in range(2,11)]+["J", "Q", "K", "A"])

    """
    字典推导式
    """
    lst1 = ['测试','笨蛋','混蛋']
    lst2 = ['xixi','haha','bend']
    dic = {lst1[i] : lst2[i] for i in range(len(lst1))}
    print(dic)
    """
    集合推导式
    """
    print({i for i in range(1,100)})
    3、内置函数 |

  • 相关阅读:
    51 数据中重复的数字
    64 数据流中的中位数
    79. Word Search
    93. Restore IP Addresses
    547. Friend Circles
    Epplus Excel 导入 MSSQL 数据库
    用来更新服务的bat 脚本
    ASP.Net MVC 引用动态 js 脚本
    8、结构的构造器应该显式调用!!!(坑)
    Task 线程重用导致等待!
  • 原文地址:https://www.cnblogs.com/iaoyuyuyuhuanghuang/p/14192639.html
Copyright © 2011-2022 走看看