直接用作于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之路----------迭代器的更多相关文章

  1. Python之路迭代器协议、for循环机制、三元运算、列表解析式、生成器

    Python之路迭代器协议.for循环机制.三元运算.列表解析式.生成器 一.迭代器协议 a迭代的含义 迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的 ...

  2. python之路——迭代器和生成器

    阅读目录 楔子 python中的for循环 可迭代协议 迭代器协议 为什么要有for循环 初识生成器 生成器函数 列表推导式和生成器表达式 本章小结 生成器相关的面试题 返回顶部 楔子 假如我现在有一 ...

  3. 百万年薪python之路 -- 迭代器

    3.1 可迭代对象 3.1.1 可迭代对象定义 **在python中,但凡内部含有 _ _ iter_ _方法的对象,都是可迭代对象**. 3.1.2 查看对象内部方法 该对象内部含有什么方法除了看源 ...

  4. python之路--迭代器和生成器

    迭代: 迭代器协议: 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代 ...

  5. Python之路----迭代器与生成器

    一.迭代器 L=[1,,2,3,4,5,] 取值:索引.循环for 循环for的取值:list列表 dic字典 str字符串 tuple元组 set f=open()句柄 range() enumer ...

  6. Python之路-迭代器 生成器 推导式

    迭代器 可迭代对象 遵守可迭代协议的就是可迭代对象,例如:字符串,list dic tuple set都是可迭代对象 或者说,能被for循环的都是可迭代对象 或者说,具有对象.__iter__方法的都 ...

  7. 【Python之路】特别篇--生成器(constructor)、迭代器(iterator)、可迭代对象(iterable)

    生成器(constructor) 生成器函数在Python中与迭代器协议的概念联系在一起.包含yield语句的函数会被特地编译成生成器 !!! 当函数被调用时,他们返回一个生成器对象,这个对象支持迭代 ...

  8. Python之路

    Python学习之路 第一天   Python之路,Day1 - Python基础1介绍.基本语法.流程控制              第一天作业第二天   Python之路,Day2 - Pytho ...

  9. python之路 目录

    目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...

随机推荐

  1. XSS跨站点脚本攻击

    XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS. 以下为Jav ...

  2. python处理地理数据-geopandas和pyshp

    这边博客并不是有关geopandas的教程和pyshp的教程! 使用python来处理地理数据有很多相关的包,最近研究需要处理一些地理数据,然而arcgis的arcpy总是不能令人满意.所以这里说说p ...

  3. 【淘淘】Spring整合Quartz框架

    我在外面工作实习的时候,我们做的项目是一个日报子系统,也就是定时定点为公司生成一些报表数据还有一些数据反馈.这时候我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.当时,我做 ...

  4. [工作中的设计模式]组合模式compnent

    一.模式解析 将对象组合成树形结构以表示“部分整体”的层次结构.组合模式使得用户对单个对象和使用具有一致性. 组合模式的要点是: 1.对象整体以树形层次结构进行展示 2.树的根节点和子节点均可以添加删 ...

  5. web项目绝对路径与相对路径的问题

    1.绝对路径:就是一个文件url的全部或者磁盘完整的物理地址;例如 http://localhost:8080/navigation/a.jsp就是a.jsp的绝对路径,再例如 D:\TC\a.jsp ...

  6. 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[ ...

  7. css基础2

    标准流(normalflow) ◆元素默认的显示方式都是按照标准流的方式显示 ◆块级元素默认独占一行显示===>标准流显示方式 ◆行内元素在一行上显示===>    标准流的显示方式 浮动 ...

  8. How to parse HTML page data in Windows Phone

    1. Navigate to page WebBrowser control browser.Navigate(new Uri("http://www.xxxx.com")); 2 ...

  9. Python获取当前日期及时间

    import time def GetNowTime(): return time.strftime("%Y%m%d%H%M%S",time.localtime(time.time ...

  10. *HDU1285 拓扑排序

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...