zoukankan      html  css  js  c++  java
  • python-day12

    一. 迭代器

      迭代器

        __iter__()获取迭代器

        __next__()下一个

     

    二. 生成器

      本身就是迭代器

      两种方法写生成器

        1. 生成器函数

        2. 生成器表达式

     1 #生成器函数,就是把return换成yield
     2 # def generator():
     3 #     print('爽歪歪')
     4 #     yield '娃哈哈'#可以让我们的函数分段运行
     5 #     print('酸酸乳')
     6 #     yield 'AD钙奶'
     7 #     print('黄焖鸡米饭')
     8 #     yield
     9 #
    10 # ret = generator()#不会执行你的函数,获取到生成器对象
    11 # print(generator())
    12 # print(ret)
    13 # print(ret.__next__())
    14 # print(ret.__next__())#必须执行__next__()才能触发生成器
    15 # print(ret.__next__()) #StopIteration 会打印黄焖鸡米饭 找不到yield会报错
    View Code
    # 生成器表达式
    # dic = [1,2,3,4,5,6,7,8,9,0]
    # s = (i for i in dic)
    # print(s)

    三. 生成器函数

      函数内部有yield,yield返回 >>>>return

      yield可以把函数分段执行

      生成器函数被调用的时候. 返回生成器

      def func():

        yield

      g = func() - 得到生成器

     

      生成器的用法和迭代器基本一致

      __next__() 开始执行生成器. 执行到yield. 直到没有yield,抛出StopIteration

      send() 可以给上一个yield传值

      1. 省内存

      2. 惰性机制, 不访问__next__() 就没有值

      3. 只能向前. 不能反复

    四. 各种推导式

      列表推导式 [ 结果 for循环 if判断 ]

      字典推导式 {key: value for循环 if判断 }

      集合推导式 { key for循环 if判断 }

     1 # 列表推导式
     2 # lst = [ 'python全栈%s期'%i for i in range(1,18) if i%2==1]
     3 # print(lst)
     4 # 语法:[结果 for循环 if判断]
     5 
     6 # 字典推导式
     7 # ls = [11,22,33]
     8 # di = {i:ls[i] for i in range(len(ls))}
     9 # print(di)
    10 
    11 # 集合推导式
    12 # print({i for i in range(10)})
    13 
    14 # 生成器表达式
    15 # dic = [1,2,3,4,5,6,7,8,9,0]
    16 # s = (i for i in dic)
    17 # print(s)
    View Code

    五. 生成器表达式

      (结果 for循环 if 判断)

      惰性机制, 不访问__next__() 就没有值

      只能向前. 不能反复

    yield from 

    1 # def func():
    2 #     dic = [1,2,3,4]
    3     ## yield from dic
    4     # yield dic[0]
    5     # yield dic[1]
    6     # yield dic[2]
    7     # yield dic[3]
    8 # a= func()
    View Code

     

  • 相关阅读:
    Gym
    struts2.5 使用感叹号和通配符实现动态方法调用无效的问题及解决!
    Offfice 多重版本key残留并存的异常问题
    IDEA Struts2 truts-default显红的解决办法
    Struts2的库在 IDEA 的外联库就会报错,不知道为什么。
    计算机二级python 知识点篇(第三方库)
    计算机二级python 知识点篇(python标准库)
    计算机二级python 知识点篇(内置函数整理)
    计算机二级python 知识点篇(文件和数据格式化)
    计算机二级python 知识点篇(组合数据类型)
  • 原文地址:https://www.cnblogs.com/Thui/p/9890511.html
Copyright © 2011-2022 走看看