python中list, str,truple,  dict都是可以被迭代的,但他们不是迭代器。why?

list/truple/map/dict这些数据的大小是确定的,我们可以准确知道他们的size。

迭代器不知道要执行多少次,所以可以理解为不知道有多少个元素,每调用一次next(),就会往下走一步,是惰性的。

判断是不是可以迭代,用Iterable

from collectionsimport Iterable

isinstance({}, Iterable) -->True

isinstance((), Iterable) -->True

isinstance(100, Iterable) -->False

凡是可以for循环的都是Iterable

判断是不是迭代器,用Iterator

isinstance({}, Iterator)  -->False

isinstance((), Iterator) -->False

isinstance( (xfor xin range(10)), Iterator)  -->True

凡是可以.(next)的,都是Iterator.

备注:

集合数据类型如list,truple,dict,str,都是Itrable不是Iterator,但可以通过iter()函数获得一个Iterator对象

Python中的for循环就是通过next实现的

参考资料:https://www.jianshu.com/p/c523b4a8be6c

python iterator iterable_Python中Iterator和Iterable的区别相关推荐

  1. python os system_python中os. popen system的区别

    python调用Shell脚本或者是调用系统命令,有两种方法: os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,正确会返回0,错误会返回其他数字. 后者的返回值 ...

  2. python安装copy_python中copy和deepcopy 的区别

    请简述赋值, 深拷贝和浅拷贝的区别?(python中如何拷贝一个对象?) 直接赋值(li1 = li): 只传递对象的引用, li1指向对象li的内存地址空间, 因此, 原有列表li改变, 被赋值的l ...

  3. python axes_python matplotlib中axes与axis的区别?

    1.axes subplot axis 先说第一个疑惑 Axes - Subplot - Axis 之间到底是个什么关系? 因为我是努力在看英文的教程,所以刚开始对axes和axis是基本搞不清的,一 ...

  4. python魔法方法中的__str__和__repr__区别

    __str__(self): class Test1():def __str__(self):return 'I am __str__' #return即返回什么打印什么 >>>a ...

  5. Python RE模块中search()和match()的区别

    match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配: 也就是说match()只有在0位置匹配成功的话才有返回, 如果不是开始位置匹配成功的 ...

  6. Python 中 Iterator和Iterable的区别

    Python中 list,truple,str,dict这些都可以被迭代,但他们并不是迭代器.为什么? 因为和迭代器相比有一个很大的不同,list/truple/map/dict这些数据的大小是确定的 ...

  7. Python 中iterator

    The two methods correspond to two distinct protocols: 1. An object can be iterated over with "f ...

  8. java中Iterator用法总结

    Java中Iterator用法 迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级& ...

  9. Java中Iterator用法

    迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价 ...

最新文章

  1. MySQL创建相同表和数据命令
  2. MyEclipse搭建java Web项目开发环境
  3. LeetCode Arithmetic Slices(动态规划)
  4. 深入理解Linux socket
  5. AtCoder 4169 [ARC100D] Colorful Sequences(dp)
  6. 软考解析:2017年上半年下午试卷
  7. UVa10881 Piotr's Ants【模拟】
  8. 常用代码模板1 ----- 基础算法
  9. 自学python要多久-怎么自学python,大概要多久?
  10. My Data Sructure TemplatesClass
  11. 阿里云流水线主机离线启动
  12. sourceMap到底是个啥玩意?
  13. warning CS0618: 'WWW' is obsolete: 'Use UnityWebRequest, a fully featured replacement which is more
  14. 人脸识别算法-LBP算法及python实现
  15. 【英语阅读】经济学人 | 人脸识别不只是另一种技术。它将改变社会
  16. mybatis学习第一次使用
  17. linux ssh freeradius,配置FreeRADIUS提供AAA服务
  18. CC2541蓝牙学习——串口_0和1(寄存器版本)
  19. 批量下载网页上ts视频文件(撸sir!你还在为下载小电影而苦恼吗?)
  20. 交互设计和UI设计有区别吗 UI学习路线是什么

热门文章

  1. 洛谷P3205合唱队——区间DP
  2. Hibernate学习笔记③
  3. minix中atoi、atol、atof的实现
  4. GridView 中添加删除确认提示框
  5. GARFIELD@01-19-2005
  6. 在leveldb中,为什么要有immutable memtable?
  7. redis源码之main()函数剖析
  8. 新风口下:嵌入式AI学习中较好的练手项目(附代码资料/学习视频/学习规划)...
  9. 随便聊聊,Linux 中的环境变量
  10. 感觉stm32太简单是一种自负吗?