Python之路----------迭代器
直接用作于for循环的数据类型有以下几种:
1、集合类的数据类型:list tuple dict set str等
2、生成器generator,包括生成器和带有yiled 的generator function
上面这些可以直接用于for循环的对象统称为可迭代的对象Iterable。
 #coding=utf-8
 from collections import Iterable
 print(isinstance({}, Iterable))  #True
 print(isinstance([], Iterable))  #True
 print(isinstance('iterable', Iterable))  #True
 print(isinstance((), Iterable))  #True
 print(isinstance(100, Iterable))   #False
迭代器:可以被next()调用不断返回下一个值的对象称之为迭代器(Iterator)
 from collections import Iterator
 print(isinstance({}, Iterator))  #False
 print(isinstance([], Iterator))  #False
 print(isinstance('iterable', Iterator))  #False
 print(isinstance((), Iterator))  #False
 print(isinstance((x for x in range(5)), Iterator))   #True
 #上述可知,列表、字典、字符串、元祖等都不属于迭代器(Iterator)
可迭代对象能否变成迭代器呢?通多内置方法iter()可以实现
 from collections import Iterator
 print(isinstance(iter({}), Iterator))  #True
 print(isinstance(iter([]), Iterator))  #True
 print(isinstance(iter('iterable'), Iterator))  #True
 print(isinstance(iter(()), Iterator))  #True
 print(isinstance((x for x in range(5)), Iterator))   #True
小结:
#Python的For循环本质就是不断通过调用next函数实现的例如下面两段代码 #代码一 for x in range(10):
print(x) #代码二
it = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
while True:
try:
x = next(it)
print(x)
except StopIteration:
break
#代码一与代码二等价
Python之路----------迭代器的更多相关文章
- Python之路迭代器协议、for循环机制、三元运算、列表解析式、生成器
		Python之路迭代器协议.for循环机制.三元运算.列表解析式.生成器 一.迭代器协议 a迭代的含义 迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的 ... 
- python之路——迭代器和生成器
		阅读目录 楔子 python中的for循环 可迭代协议 迭代器协议 为什么要有for循环 初识生成器 生成器函数 列表推导式和生成器表达式 本章小结 生成器相关的面试题 返回顶部 楔子 假如我现在有一 ... 
- 百万年薪python之路  --   迭代器
		3.1 可迭代对象 3.1.1 可迭代对象定义 **在python中,但凡内部含有 _ _ iter_ _方法的对象,都是可迭代对象**. 3.1.2 查看对象内部方法 该对象内部含有什么方法除了看源 ... 
- python之路--迭代器和生成器
		迭代: 迭代器协议: 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代 ... 
- Python之路----迭代器与生成器
		一.迭代器 L=[1,,2,3,4,5,] 取值:索引.循环for 循环for的取值:list列表 dic字典 str字符串 tuple元组 set f=open()句柄 range() enumer ... 
- Python之路-迭代器 生成器 推导式
		迭代器 可迭代对象 遵守可迭代协议的就是可迭代对象,例如:字符串,list dic tuple set都是可迭代对象 或者说,能被for循环的都是可迭代对象 或者说,具有对象.__iter__方法的都 ... 
- 【Python之路】特别篇--生成器(constructor)、迭代器(iterator)、可迭代对象(iterable)
		生成器(constructor) 生成器函数在Python中与迭代器协议的概念联系在一起.包含yield语句的函数会被特地编译成生成器 !!! 当函数被调用时,他们返回一个生成器对象,这个对象支持迭代 ... 
- Python之路
		Python学习之路 第一天 Python之路,Day1 - Python基础1介绍.基本语法.流程控制 第一天作业第二天 Python之路,Day2 - Pytho ... 
- python之路  目录
		目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ... 
随机推荐
- XSS跨站点脚本攻击
			XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS. 以下为Jav ... 
- python处理地理数据-geopandas和pyshp
			这边博客并不是有关geopandas的教程和pyshp的教程! 使用python来处理地理数据有很多相关的包,最近研究需要处理一些地理数据,然而arcgis的arcpy总是不能令人满意.所以这里说说p ... 
- 【淘淘】Spring整合Quartz框架
			我在外面工作实习的时候,我们做的项目是一个日报子系统,也就是定时定点为公司生成一些报表数据还有一些数据反馈.这时候我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.当时,我做 ... 
- [工作中的设计模式]组合模式compnent
			一.模式解析 将对象组合成树形结构以表示“部分整体”的层次结构.组合模式使得用户对单个对象和使用具有一致性. 组合模式的要点是: 1.对象整体以树形层次结构进行展示 2.树的根节点和子节点均可以添加删 ... 
- web项目绝对路径与相对路径的问题
			1.绝对路径:就是一个文件url的全部或者磁盘完整的物理地址;例如 http://localhost:8080/navigation/a.jsp就是a.jsp的绝对路径,再例如 D:\TC\a.jsp ... 
- HDU 3038 How Many Answers Are Wrong(种类并查集)
			题目链接 食物链类似的题,主要是在于转化,a-b的和为s,转换为b比a-1大s.然后并查集存 此节点到根的差. 假如x的根为a,y的根为b: b - y = rank[y] a - x = rank[ ... 
- css基础2
			标准流(normalflow) ◆元素默认的显示方式都是按照标准流的方式显示 ◆块级元素默认独占一行显示===>标准流显示方式 ◆行内元素在一行上显示===> 标准流的显示方式 浮动 ... 
- How to parse HTML page data in Windows Phone
			1. Navigate to page WebBrowser control browser.Navigate(new Uri("http://www.xxxx.com")); 2 ... 
- Python获取当前日期及时间
			import time def GetNowTime(): return time.strftime("%Y%m%d%H%M%S",time.localtime(time.time ... 
- *HDU1285 拓扑排序
			确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ... 
