一、可迭代的对象(Iterable)
1、定义:可以直接用在循环的数据类型,如list,tuple,dict,set,str,还有generator(生成器),
和带yield的函数,这些直接可以用在循环的对象统称为可迭代对象(Iterable)
from collections import Iterable
print(isinstance([], Iterable))
print(isinstance((), Iterable))
print(isinstance({}, Iterable))
print(isinstance("abc", Iterable))
print(isinstance((x for x in range(10)), Iterable)) # 生成器也是可迭代对象
print(isinstance(10, Iterable)) # 数字不是可迭代对象
 二、迭代器(Iterator)

1、定义:生成器不但可以用在循环中,还能用next()不断调用返回下一个值,直到爆出StopIteration异常,
2、可迭代对象和迭代器和区别:迭代器和可迭代对象不是同个概念,区别在于是否有next函数(可以用dir(object)来查看此对象的所有支持的函数)。
from collections import Iteratorprint(isinstance([], Iterator))
print(isinstance((), Iterator))
print(isinstance({}, Iterator))
print(isinstance("abc", Iterator))
print(isinstance((x for x in range(10)), Iterator)) # 生成器是迭代器
print(isinstance(10, Iterator)) # 数字不是迭代器对象
 三、可迭代对象与迭代器之间的转换

1、使用iter()函数将可迭代对象转换成迭代器。
list1 = iter([1,2,3,4,5])
print(list1.__next__())
print(list1.__next__())
   2、为什么像list,string,tuple这样的可迭代对象不是迭代器?
因为这些数据结构是将已经存在的数据赋值他们,而迭代器是惰性计算的程序流,他甚至没有数据,所以可迭代对象只能表示有限的元素个数,而迭代器甚至可以表示整个自然数集合。 四、python很多功能都有迭代器的影子,举一些内置迭代器的例子

1、循环用到的range(),其实就是一个迭代器,比如range(10000),不是生成一个10000个元素的集合,而内置了next函数,逐个生成。
2、文件调用的时候file.redelines(),是返回一个列表,而 for line in file: 则是迭代器中逐行前进,也是内置了next函数 五、小结:迭代器是一个概念,其实就是生成器的应用。

最新文章

  1. Spring的三种通过XML实现DataSource注入方式
  2. web api+递归树型结构
  3. ubuntu VNC server 黑屏 yum源更新(ubuntu16.04)
  4. percona-toolkit工具包的使用教程之开发类工具
  5. C#综合揭秘——细说多线程(上)
  6. 使用maven, myeclipse工具构建spring mvc项目
  7. UVa1586 Molar mass
  8. JavaScript高级程序设计 第三章 基本概念
  9. Linux基础(三)
  10. HTML5之Canvas画正方形
  11. 芝麻HTTP:Gerapy的安装
  12. SpriteKit物理引擎碰撞中5个重要信息
  13. 搭建Node.js的Web框架egg.js
  14. 【原创】一个线程oom,进程里其他线程还能运行吗?
  15. 35_张孝祥Java高新技术_为注解增加各种属性
  16. Python 的AES加密与解密-需要安装的模块
  17. Redis实战(七)Redis开发与运维
  18. 一种获取xml文件某个节点内容的shell方法
  19. State of the official Elasticsearch Java clients
  20. idea创建文件类型失败(xml之类的失效

热门文章

  1. vue 点击跳转路由设置
  2. 必备技能五、router路由钩子
  3. Nginx之负载均衡配置(一)
  4. 使用SharpDevelop配合MonoGame进行游戏开发
  5. asyncio在爬虫中的使用
  6. D2T1服务器需求——毒?瘤题(并不是
  7. let和var在for循环中的不同表现
  8. (转)GNU风格ARM汇编语法指南(非常详细)2
  9. 机器学习 - LSTM应用之情感分析
  10. kerberos系列之kerberos安装