zoukankan      html  css  js  c++  java
  • 第5.5章 迭代器与生成器——CookBook笔记

    将迭代器打包成类,维护额外的状态

    __iter__ 实现为yield

    for驱动与其他驱动(需要额外一次iter())的实现差异

    委托到内置可迭代对象 与 基于生成器迭代的差异

    iter与for的实现关联

    手动访问迭代器中的元素

    可迭代对象

    迭代器对象

    调用next

    委托迭代

    定义__iter__方法,将迭代请求委托到,对象内部的容器

    生成器创建自定义迭代

    函数中出现了yield,转变为生成器

    只有在响应迭代操作才运行

    实现迭代协议

    简单方案:实现生成器

    反向迭代

    reversed

    要求: 长度确定,或实现了__reversed__

    否则先转化为列表

    定义有额外状态的生成器函数

    类,实现iter为生成器函数

    类实例,提供内部属性访问

    生成器需要与程序其他部分交互

    暴露属性,允许方法调用来获得控制

    需要额外调用一次iter,提取类中的迭代器

    迭代器切片

    itertolls.islice

    产生迭代器,访问需要的数据

    跳过开头一部分迭代元素

    itertools.dropwhile

    对可能的组合与排列

    itertools.permutations

         .combinations

    指定:长度,是否允许重复

    索引-值 迭代序列

    enumerate

    同时迭代多个序列

    zip

    取决于最短长度

    最长

    返回迭代器

    不同容器迭代

    chain

    创建数据管道

    生成器函数

    应用于解析,读取实时数据源,定期轮询

    yield作为数据生产者,内存高效性

    扁平化嵌套序列

    yield from 嵌套生成器

    合并多个有序序列,整体有序

    heapq.merge

    要求输入有序

    迭代器取代while循环

  • 相关阅读:
    乐观锁与悲观锁——解决并发问题
    CentOS7 loaded active exited
    ubuntu安装phpVirtualBox web服务
    linux drwxr-xr-x 是什么意思
    phpmyadmin配置文件权限错误,不应任何用户都能修改
    转: CentOS安装jdk8
    PostgreSQL windows service启动失败
    PostgreSQL 添加自定义变量
    数据库检查约束是否存在
    转:PostgreSQL Cheat Sheet
  • 原文地址:https://www.cnblogs.com/qmcj/p/9150070.html
Copyright © 2011-2022 走看看