python返回迭代器_python--迭代器
迭代器
一、可迭代对象
可直接作用于for循环类型:
集合数据类型,如 list,tuple,dict,set,string等
generator,包括生成器和带yield的函数
这些统称为可迭代对象,Iterable
可以使用isinstance()来判断一个对象是否是Iterable:
True
>>> from collections import Iterable
>>> isinstance([],Iterable)
True
>>> isinstance({},Iterable)
True
>>> isinstance((),Iterable)
True
>>> isinstance("china",Iterable)
True
>>> isinstance(123,Iterable) #数字不是
False
>>> isinstance(range(10),Iterable)
True
>>> isinstance((x for x in range(10)),Iterable)
True
注:而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示 无法继续返回下一个值了。
二、迭代器
迭代器(Iterator):可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
可以使用isinstance()判断一个对象是否是Iterator对象:
>>> isinstance([],Iterator)
False
>>> isinstance({},Iterator)
False
>>> isinstance((),Iterator)
False
>>> isinstance((x for x in range(10)),Iterator)
True
生成器都是Iterator对象,但是想list、dict、tuple、string虽然也是Iterable,却不是迭代器(Iterator)。
三、iter()函数
我们可以使用iter()函数将可迭代对象(Iterable)变成迭代器(Iterator)
把list、dict、str等Iterable变成Iterator可以使用iter()函数:
>>> isinstance(iter([]),Iterator)
True
>>> isinstance(iter({}),Iterator)
True
>>> isinstance(iter(()),Iterator)
True
>>> isinstance(iter("sssss"),Iterator)
True
你可能会问,为什么list、dict、str等数据类型不是Iterator?
这是因为Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。
Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的。
四、可迭代对象的循环
g = (x for x in range(5))
for i in g:
print(i)
#其实相当于
it = iter([0,1,2,3,4])
#print(type(it))
while True:
try:
x = next(it)
print(x)
except StopIteration:
break
五、总结
凡是可作用于for循环的对象都是Iterable类型
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
python返回迭代器_python--迭代器相关推荐
- python列表迭代器_python迭代器生成器-迭代器和list区别
迭代 生成 for循环遍历的原理 for循环遍历的原理就是迭代,in后面必须是可迭代对象 为什么要有迭代器 对于序列类型:字符串.列表.元组,我们可以使用索引的方式迭代取出其包含的元素.但对于字典.集 ...
- python迭代器_Python迭代器
python迭代器 Good day learners! In our previous tutorial, we learned about Python Operator Overloading. ...
- python iterable对象_Python迭代器Iterable判断方法解析
迭代器(Iterable):能直接作用于for循环的对象,统称可迭代对象.例如:list.tuple.set.str.generator都是可迭代对象. 1.如何判断一个对象是否可迭代: # 如何判断 ...
- pythonzip是迭代器_Python迭代器和zip
迭代器就像一个项目流.您只能一次查看流中的项目,并且只能访问第一个元素.要查看流中的某些内容,您需要将其从流中删除,一旦您从流的顶部获取内容,它就会从流中消失. 当您调用zip(i,i)时,zip首先 ...
- python 返回空格_Python面试之 is 和 == 的区别
Python爬虫人工智能学习教程www.python88.cn 面试实习生的时候,当问到 is 和 == 的区别时,很多同学都答不上来,搞不清两者什么时候返回一致,什么时候返回不一致.本文我们来看一 ...
- python返回元组_python – numpy.where返回一个元组的目的是什么?
当我运行此代码时: import numpy as np a = np.array([1, 2, 3, 4, 5, 6]) print(np.where(a > 2)) 获得一个指数数组是很自然 ...
- python返回上级_python 获取当前,上级,上上级路径(任何上级路径)
我看了一些博客,对获得当前路径有很多方法,如os.getcwd()与os.path.abspath(r"."),其中os.path.abspath(r"..") ...
- python 返回列表_python返回列表
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 列表列表是python最常用的数据类型,它可以作为一个方括号内的逗号分隔值出现列 ...
- python字典items返回什么_Python 字典items返回列表,iteritems返回迭代器
说明:items以列表方式返回字典中的键值对,iteritems以迭代器对象 返回键值对儿(Python3中不再支持): 字典items()方法和iteritems()方法,是python字典的内建函 ...
- python yield用法_Python中迭代器和生成器的区别?
公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...
最新文章
- MySQL数据库相关命令
- JavaScript前端框架的思考
- rose 2003 7.0_安卓微信7.0.17正式版更新:十大新鲜功能~
- 37、Django实战第37天:404以及500页面配置
- 微信小游戏开发(9)- 分包加载
- elementUI+vue-cli el-table=》excel
- 1.13 梯度检验-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- linux下tomcat部署
- ZooKeeper available but no active master location found
- 【LOJ6363】「地底蔷薇」【点双】【指数型生成函数】【扩展拉格朗日反演】【多项式幂函数】
- 添加MD5 密码加密
- PHP+Mysql+jQuery找回密码
- editplus使用php,EditPlus如何运行php文件
- 10分钟教你从零开始python_10分钟教你从零开始学python入门
- python计算加权平均分
- 目前能体验到的虚拟主播虚拟人脸形象有哪些?
- 发邮件+实习+简历+
- 国内B2C 26个经典购物网站商城收集
- webrtc QOS方法十二(接收端IDR帧请求)
- OpenGL(可编程管线):Bezier曲面
热门文章
- 作为一名普通程序员,在为为生计而奋斗,深漂的感触。@http://bbs.csdn.net/topics/390632368
- 如何完全卸载HbuilderX?
- java nextint括号_Java中关于nextInt()、next()和nextLine()的理解
- Mac PPPOE命令行连接
- java定义boolean命名_阿里规范:为何boolean类型变量命名禁用is开头
- python字符串赋值列表_python字符串赋值
- window.loaction.herf与ajax在下载文件时的区别
- 如何将计算机网络设置为家庭网络连接打印机共享,Win7系统如何设置打印机共享,详细图文步骤...
- ElementUI+el-dropdown函数触发事件
- bootstrap实现下拉框dropdown选中select option 美爆了