python 迭代器、生成器待续。。

来源:互联网 发布:java easyui tree例子 编辑:程序博客网 时间:2024/05/22 09:06
一、迭代器
  1.     概念:
    • 根据记录前面元素的位置信息,去访问元素的过程—遍历
    • 特点只能从前向后访问
      
    2.     可迭代对象

  • 判断可迭代对象的方法
    • iterable(��迭代对象)
      • for item in obj:(obj为可迭代对象)
      • print(item)
    • 函数isinstance(对象,类型)判读对象是否为类型的实例。
      • ex:from collections import Iterable
      • isinstance(obj,Iterable)返回bool值

  • 可迭代对象需要具备类魔法方法:
    • __iter__方法可以返回自己,可迭代对象的本质是通过iter方法提供一个可遍历的对象
      • return self

  • 迭代器具备next()方法:
    • Def__next__(self):
      • 如果需要实现一个迭代器,就需要使用__next__(self):方法

  • 获取可迭代对象的迭代器
    • Iter(可迭代对象)(返回迭代器)
  • Next(迭代器)函数调取,调取最后一个后抛出StopIteration

  • 判断一个对象是迭代器
    • isinstance(对象名,Iterator)

二、生成器(generator)
        具备二种形式
        1.生成器表达式格式(x for x in range(100))

        2.生成器是特殊的迭代器。使用方式和迭代器完全一样,内部        已经实现了next()iter()。

        3.   生成器函数

  • yield 魔法 可以暂停while循环

  • 含有yield关键字的函数已经不是普通函数了,而是生成器函数。
    • 在执行函数是能够挂起当前函数,并将yield后面的数据当作返回值返回给调用代码
    • 当在此调用该生成器的函数的时候,会继续恢复当前函数,并且紧接着上次运行的代码继续运行
    • send函数 相当于next(),区别在于可以给生成器发送数据 用法不同函数值.send()参数为发送数据。