深入python3中的迭代器和生成器

1.迭代器:

    概念:迭代器是对集合内元素的一种访问方式

    特点:

        a.迭代器对象从可迭代对象的第一个元素开始访问,直到迭代完所有元素

        b.迭代器在迭代过程中只能往前迭代,不能回退

        c.迭代器和经典的for循环相比,没有下标,但可以使用内建函数enumreat()获取索引

        d.迭代器是非线程安全的,因此应尽量使用不可变集合

        e.迭代器不需要事先准备好所有元素,它本身会迭代到哪儿计算到哪,对程序的内存机制做出优化,又称惰性求值

        f.迭代器提供了一个统一的集合的接口,只要实现_iter_()方法的对象便可以使用迭代器进行访问

    实现迭代器的三种方式:

        a.使用iter(可迭代对象)在小括号中括起来:(如下图Demo)

        

        运行结果:1,2,3,4,5

        b.使用类似于java中的foreach循环方式实现迭代器:(如下图Demo)

        

        运行结果:1,2,3,4,5

        c.在类中重写_iter_()方法:(如下图Demo)

        

        运行结果:0,1,2,3,4

        再就是注意:在python中迭代器的.next()方法是一只可以被调用的,当集合中的元素已经全部调用完了后继续调   用.next()方法,则会抛出StopIteration异常,在python中并没有hasnext()方法来判断可迭代对象中是否还有元素可以被迭    代,此时便可以对StopIteration异常进行捕获来判断


2.生成器:

    1.概念:生成器就是一种迭代器

    2.特点:

        a.定义一个生成器往往比定义一个迭代器更见简介,

    3.实现生成器的方式

        a.使用yield将一个普通函数变为生成器函数(如下图Demo)

        

        1.注意当调用一个生成器函数是,此时返回的将会是一个生成器

        2.当第一次调用生成器的.next()方法时,生成器才会开始执行生成器函数,直到遇到yield时停止,之后每次调用.next()方      法 都会次上次暂停的地方开始      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值