python 迭代器 生成器 区别_迭代器&Python可迭代对象,迭代器,生成器的区别

1.可迭代对象,迭代器和生成器之间的关系

5a30913663193bee00bc5fc18e8a5441.png

05659f62c9cfa375a396f5f0e4bf1fd6.png

可迭代对象与迭代器 刚开始我认为这两者是等同的,但后来发现并不是这样;下面直接抛出结论:

1)可迭代对象包含迭代器。

2)如果一个对象拥有__iter__方法,其是可迭代对象;如果一个对象拥有next方法,其是迭代器。

3)定义可迭代对象,必须实现__iter__方法;定义迭代器,必须实现__iter__和next方法。

你也许会问,结论3与结论2是不是有一点矛盾?既然一个对象拥有了next方法就是迭代器,那为什么迭代器必须同时实现两方法呢?

因为结论1,迭代器也是可迭代对象,因此迭代器必须也实现__iter__方法。

b25f6d7f50255d31ee52ac82b16e65b6.png

可迭代对象:

1.生成器

2.元组,列表,集合,字典,字符串(需要借助iter()函数转换,变成了迭代器)

判断是否可迭代?

1 from collections importIterable2

3 #列表

4 list1 = [1, 3, 4, 5]5 f =isinstance(list1, Iterable)6 print(f)7

8 #字符串

9 f = isinstance('abc', Iterable)10 print(f)11

12 #整型

13 f = isinstance(100, Iterable)14 print(f)15

16 #生成器

17 g = (x for x in range(10))18 f =isinstance(g, Iterable)19 print(f)

b17b69591d2888ac1d2e00d568634525.png

迭代器是访问集合元素的一种方式,迭代器是一个可以记住遍历的位置的对象

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束

迭代器只能往前不会后退

可以被next()函数调用并不断返回下一个位置的对象称为迭代器:Iterator

问题:可迭代的是否就是迭代器?

list是可迭代的,但不是迭代器

生成器是可迭代的,也是迭代器

669ec0517c80bfc9741509ddc97addc0.png

那怎么把list变成迭代器?

利用系统函数iter(),将可迭代的变成一个迭代器

list1 = iter(list1)

生成器与迭代器的关系

迭代器包括生成器,生成器是迭代器的一种

python next()函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值