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

     

  • 相关阅读:
    短连接生成
    google 定位 标记 地址解码 逆解码
    Laravel 文件上传
    Laravel
    对接航信开票-在线二维码开票
    win 下 composer 安装
    对接美团外卖开放平台
    IOS 弹框在微信中导致输入框等失焦 偏移问题解决
    微信公众号-高德地图实例
    对接百度地图API 实现地址转经纬度
  • 原文地址:https://www.cnblogs.com/Thui/p/9890511.html
Copyright © 2011-2022 走看看