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

潍坊建设部门管理网站企业营销策划及推广

潍坊建设部门管理网站,企业营销策划及推广,淮安市网站建设,个人简历免费模板目录 迭代器 小结 迭代器 我们已经知道,可以直接作用于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/78866.html

相关文章:

  • 百度网站优化指南爱站网seo培训
  • 如何做垂直网站广告网
  • wordpress站内全文检索win7优化软件
  • 代理记账网站怎么做关键seo排名点击软件
  • 网站中捕获鼠标位置百度网页版链接
  • 网站设计有限公司怎么样优秀网站设计
  • 网站网页建设与维护商业软文案例
  • 厦门网站建设 软件园青岛自动seo
  • 做网站去哪里找网络营销策划书的范文
  • 在演示文稿上网站怎么做上海网络推广公司
  • 网络公司做网站价格营销网站定制
  • 顺德网站建设公司价位中国今天新闻最新消息
  • 网站建设需要多少钱做销售最挣钱的10个行业
  • 上海web网站建设北京百度关键词排名
  • 一个网站如何做盈利网络营销案例分析论文
  • 益保网做推广网站吗合肥seo推广培训班
  • 贵州住房和城乡建设厅旧网站facebook海外推广
  • 做代购起家的奢侈品特卖网站百度联盟广告
  • 企业网站管理系统毕业论文优化快速排名公司
  • 微官网怎么注册广州seo网站开发
  • 西安网站建设公司西安网络公司怎么做ppt
  • 做彩票预测网站违法吗培训计划方案模板
  • 国外做问卷网站好站长统计app网站
  • 模拟网站建设软件有哪些鹤壁网络推广哪家好
  • 点卡网站怎么做seo学途论坛网
  • 有没有专门做二手的网站seo查询优化
  • 手机网站建设策划方案电脑培训班价目表
  • 2018建设网站网络营销主要是什么
  • 微信朋友圈投放广告广州网站优化公司
  • 深圳手机端网站建设网络推广电话