美文网首页ITS·黑客
【python】可迭代对象&迭代器&生成器

【python】可迭代对象&迭代器&生成器

作者: 某米狼 | 来源:发表于2017-04-06 12:07 被阅读57次

傻傻分不清

可迭代对象
  • 举例:容器如字符串、列表、元组、字典、集合,文件对象和管道对象,迭代器
  • 可通过for..in来调用next方法进行遍历的对象
  • 当我们对可迭代对象进行for...in循环时,实际是用iter()方法把它转化为迭代器后再next()返回
  • 有限序列?
迭代器
  • 为容器对象添加 __iter__()__next__() 方法(Python 2.7 中是 next()
    __iter__() 返回迭代器对象本身 self,__next__()则返回每次调用next()或迭代时的元素;
  • 内置函数 iter() 将可迭代对象转化为迭代器
  • 通过yield语句快速生成迭代器
生成器
  • 迭代器的一种,即上面的第三种
  • 两种类型:生成器函数(包含yield的函数)和生成器表达式(把列表生成式的[]改为())
  • return关键词被yield取代,程序执行到 yield 会返回值并暂停,再次调用 next() 时会从上次暂停的地方继续开始执行。
是这样吗↓

普通函数

def sth():
    result = []
    for … in …
        result.append(x)
    return result

生成器函数

def iter_sth():
    for … in …
        yield x

迭代器构造

class Counter:
    def __init__(self):
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        i = self.index
        if i < 10:
            self.index += 1
            return i
        else:
            raise StopIteration

counter = Counter()
for i in counter:
    print(i)

让普通对象可迭代

class Name:
    def __iter__(self):
        return iter(['zhangsan', 'lisi', 'wangwu'])

name = Name()
for n in name:
    print(n)

相关文章

  • Python基础-16生成器-迭代器

    16.生成器-迭代器     可循环迭代的对象称为可迭代对象,迭代器和生成器函数是可迭代对象,在Python中提供...

  • 【python】可迭代对象&迭代器&生成器

    傻傻分不清 可迭代对象 举例:容器如字符串、列表、元组、字典、集合,文件对象和管道对象,迭代器 可通过for..i...

  • Python中的迭代器和生成器

    今天我们来学习下Python中的迭代器和生成器。 迭代和可迭代对象 在学习迭代器之前,我们需要了解下迭代和可迭代对...

  • 理解迭代器/生成器

    完全理解Python 迭代对象、迭代器、生成器 迭代和生成操作总结 Python迭代器 http://www.ji...

  • Python可迭代对象,迭代器,生成器关系

    列表,元组,字符串,迭代器,生成器都是可迭代对象。所以,可迭代对象不一定是迭代器,生成器。 将一个可迭代对象传递给...

  • 迭代器、生成器和协程

    迭代器、生成器和协程 可迭代(Iterable) Python 中任意的对象, 只要定义了可以返回一个迭代器的 _...

  • 迭代器

    可迭代对象(Iterable): for迭代器(Iterator): for + next生成器属于迭代器。 验...

  • 可迭代对象、迭代器、生成器

    可迭代对象 --> 迭代器 --> 生成器; 可迭代对象:实现了__iter__()方法的对象,该方法返回迭代对象...

  • yield and Iterator

    Generator(生成器) 生成器是特殊的迭代器,迭代器不一定是生成器。 生成器与迭代器均是可迭代对象。 目前学...

  • 迭代机制

    可迭代对象、迭代器、生成器、生成式区别 a. 可迭代对象: 一个对象能够被迭代的使用,这个对象就是可迭代对象 b....

网友评论

    本文标题:【python】可迭代对象&迭代器&生成器

    本文链接:https://www.haomeiwen.com/subject/fhztattx.html