鱼C论坛

 找回密码
 立即注册
查看: 190|回复: 6

“迭代器” 与 “可迭代对象”有什么区别?

[复制链接]
最佳答案
5 
发表于 2018-9-11 21:49:03 | 显示全部楼层 |阅读模式
5鱼币
问题1:迭代器 与 可迭代对象有什么区别?烦请举个例子?谢谢!



问题2:
>>> string = 'abcd'
>>> next(string)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    next(string)
TypeError: 'str' object is not an iterator


这里为什么会报错,小甲鱼不是说字符串就是迭代器吗,为什么这里string 不可迭代?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
996 
发表于 2018-9-11 21:58:16 | 显示全部楼层
字符串是可迭代对象,
迭代器这么用
1.jpeg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
24 
发表于 2018-9-11 23:05:49 From FishC Mobile | 显示全部楼层
字符串是可迭代对象哦,

可迭代对象是一个确定所有元素的序列,
你直接打印出来就会显示出来了,

到迭代器不一样,你直接打印只是一个函数地址,通过迭代这个迭代器,才能获得确定的元素,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
1304 
发表于 2018-9-12 08:45:45 | 显示全部楼层
迭代器并不存储所有数据
迭代对象是所有数据已备好,等你调用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
996 
发表于 2018-9-12 09:06:38 | 显示全部楼层
能用__next__()方法获取下一个元素的对象都是迭代器

可以返回迭代器的对象都是可迭代对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2018-9-12 20:21:54 | 显示全部楼层
可迭代对象包含可py中的序列(字符串str,字节bytes,列表list,元组tuple,字典dict,集合set,序列化对象),生成器,迭代器。
生成器与迭代器的区别最明显的就是:
1.生成器是函数
2.迭代器是类
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
3 
发表于 2018-9-12 20:50:53 | 显示全部楼层
实现了方法__iter__的对象是可迭代的,而实现了方法__next__的对象是迭代器,这两者不一样,看来str并没有实现__next__方法!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-11-16 13:55

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表