当前位置: 首页 > wzjs >正文

四川建设银行社会招聘网站优化网站最好的刷排名软件

四川建设银行社会招聘网站,优化网站最好的刷排名软件,wordpress安全漏洞,自建网站 微信网页版目录 迭代器 小结 迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list、tuple、dict、set、str等; 一类是generator,包括生成器和带yield的generator function。 这些可…

目录

迭代器

小结


迭代器

我们已经知道,可以直接作用于for循环的数据类型有以下几种:

一类是集合数据类型,如listtupledictsetstr等;

一类是generator,包括生成器和带yield的generator function。

这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

可以使用isinstance()判断一个对象是否是Iterable对象:

>>> from collections.abc import Iterable
>>> isinstance([], Iterable)
True
>>> isinstance({}, Iterable)
True
>>> isinstance('abc', Iterable)
True
>>> isinstance((x for x in range(10)), Iterable)
True
>>> isinstance(100, Iterable)
False

而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

可以使用isinstance()判断一个对象是否是Iterator对象:

>>> from collections.abc import Iterator
>>> isinstance((x for x in range(10)), Iterator)
True
>>> isinstance([], Iterator)
False
>>> isinstance({}, Iterator)
False
>>> isinstance('abc', Iterator)
False

生成器都是Iterator对象,但listdictstr虽然是Iterable,却不是Iterator

listdictstrIterable变成Iterator可以使用iter()函数:

>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True

你可能会问,为什么listdictstr等数据类型不是Iterator

这是因为Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。

Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的。

小结

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如listdictstr等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

Python的for循环本质上就是通过不断调用next()函数实现的,例如:

for x in [1, 2, 3, 4, 5]:pass

实际上完全等价于:

# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:try:# 获得下一个值:x = next(it)except StopIteration:# 遇到StopIteration就退出循环break
http://www.dtcms.com/wzjs/9539.html

相关文章:

  • 网站站群 硬盘扩容 申请报告最权威的排行榜网站
  • 成都网站建设创新互联安卓优化大师官方版本下载
  • 海南网络推广公司济南网站seo
  • wordpress文章打开很慢淘宝标题优化工具推荐
  • wordpress企业网站建设宁波 seo排名公司
  • css如何让网站首字放大谷歌推广开户多少费用
  • 做北京会所网站哪个好今日头条新闻最新消息
  • 武汉设计网seo研究中心学员案例
  • dw可以做有后台的网站么友情视频
  • 阿里巴巴网站分类板块做全屏网推什么意思
  • ui设计网站建设是什么舆情报告范文
  • 优购物官方网站手机版app开发公司有哪些
  • php商业网站制作张雷明履新河南省委常委
  • 网站备案和域名解析正规seo大概多少钱
  • 重庆网票app下载快推达seo
  • java做的网站的好处被代运营骗了去哪投诉
  • 网站底部图片代码个人怎么接外贸订单
  • 温州做网站制作哪家好黄石seo
  • 微信小程序用什么开发工具河南靠谱seo地址
  • 网站开发运行及维护百度站内搜索提升关键词排名
  • 17网站一起做网店可靠吗网站推广方案策划书2000
  • wordpress 侧边宽度百度seo推广方案
  • 可以做直播源的佛教网站最新新闻事件今天疫情
  • 北京政府网官网软文优化
  • 淘宝上做网站排名网址之家大全
  • 定西市小企业网站建设建设营销方案怎么写?
  • html5网站优势巩义网络推广公司
  • 济南智能网站建设在线bt种子
  • 新乡百度关键词优化外包广州百度seo排名
  • 重庆建设监理协会网站搜索引擎优化关键词的处理