可迭代对象,迭代器,生成器

1、Iterable:可迭代对象

可以直接作用于for循环的对象,叫做可迭代对象(Iterable)

注:

       可直接作用于for循环的对象:

                                            1、基本数据类型:list、set、dict、tuple、string

                                            2、generator生成器:带有yield关键字的生成器函数

判断一个对象是否为可迭代对象:   

from collctions import Iterable

isinstancce(obj, Iterable)          # obj为可迭代对象返回True,否则返回False

注:

       x for x in range(n) --> 生成一个新的列表,列表的数量及值由range决定

       x for x in range(5) ==> [0, 1, 2, 3, 4]

2、Iterator:迭代器

迭代器:Iterator 不仅可以直接作用于for循环,也可以使用next()函数不断调用并获取下一个元素,直 到取出最后一

              个元素,当获取最后一个元素的下一个元素时,会返回一个StopIteration 的错误

注:       可以使用next()函数调用并获取下一个元素的对象称为迭代器对象

判断一个对象是否为迭代器对象 :

from collctions import Iterator

isinstance(obj, Iterator)           # obj是可迭代对象返回True,否则返回False

*next(obj) --> obj为迭代器对象,返回迭代器中的一个元素,当使用next,光标会向后移动,当光标无法再往后移动时,

 调用next会报错

注:可迭代对象不一定是迭代器对象,但迭代器对象一定是可迭代对象

将list、set、dict、tuple、str转为Iterator对象:

                                                                       语法格式:iter(obj)

3、generator:生成器

generator生成器:使用yield关键字的函数被称为生成器函数

使用yield的函数与使用普通函数的区别:

                                                              1、使用yield的函数返回一个生成器对象

                                                               2、普通函数的返回值属于程序员自己设置

yield:将一个函数拆分成多个模块,模块与模块之间为连续的 yield可以间接控制进程或线程

生成器可以认为是一个迭代器,使用方式与迭代器一致

例:

    def func():                                                              def func():

        print(1)                                                                   yield 100

        print(2)                                                                   yield 200

        print(3)                                                                   yield 300

    print(type(func()))                                                  print(type(func())) 

  返回的是NoneType类型                                          返回的是generator类型,若用next打印,会依次打印出yield的数据

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值