zoukankan      html  css  js  c++  java
  • python之迭代器和生成器

    迭代器

    根本上说, 迭代器就是有一个 next() 方法的对象

    迭代器可用内建的iter方法创建

    >>> i = iter('abc')
    >>> i.next()
    'a'
    >>> i.next()
    'b'
    >>> i.next()
    'c'

     对类可用__iter__和next()创建迭代器

    class Fib(object):
        def __init__(self):
            self.a, self.b = 0, 1 # 初始化两个计数器a,b
    
        def __iter__(self):
            return self # 实例本身就是迭代对象,故返回自己
    
        def next(self):
            self.a, self.b = self.b, self.a + self.b # 计算下一个值
            if self.a > 100000: # 退出循环的条件
                raise StopIteration();
            return self.a # 返回下一个值
    
    for n in Fib():
        print n
    
    -------------------------------
    1
    1
    2
    3
    5
    ...
    46368
    75025

    生成器

    生成器是可以迭代的,但是只可以读取它一次

    >>> g = (x*x for x in range(3))
    >>> for i in gt :
    ...    print(i)
    0
    1
    4
    >>> for i in g :
    ...    print(i)

    yield

    #当你调用这个函数的时候,函数内部的代码并不立马执行, 这个函数只是返回一个生成器对象
    def createGenerator():
        mylist = range(3)
        for i in mylist:
            yield i*i
    
    >>> for i in mygenerator:
        print i
    0
    1
    4
    >>> for i in mygenerator:  #也是只可调用一次
        print i

    2015-05-26

  • 相关阅读:
    Linux常用命令
    Docker常用命令
    Google操作
    JAVA实现动态二维码输出
    JAVA IDEA Debug设置
    JAVA下载https资源图片
    Nginx配置文件常用操作
    Docker安装(Ubuntu、CentOS)
    SpringBoot启动脚本
    Tomcat——tomcat配置文件方式部署项目
  • 原文地址:https://www.cnblogs.com/whuyt/p/4530087.html
Copyright © 2011-2022 走看看