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循环

  • 相关阅读:
    简单的Vue示例
    Vue开发环境搭建基本操作
    2020CentOS官网下载镜像方法
    while((ch=getchar()) !=EOF && ch != ' ');语句作用
    Mac 下使用svn
    用树形结构递归渲染权限列表
    .net core中使用jwt进行认证
    C#中异步多线程的实现方式
    redis-避免生产环境使用keys命令
    让visual studio总是以管理员身份启动
  • 原文地址:https://www.cnblogs.com/qmcj/p/9150070.html
Copyright © 2011-2022 走看看