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

兰州网站建设营销q479185700刷屏专业做网站费用

兰州网站建设营销q479185700刷屏,专业做网站费用,关闭wordpress页面评论,深圳高端企业官方网站建设迭代器协议 对象必须提供一个 next() 方法#xff0c;执行该方法要么迭代下一项#xff0c;要么就引起一个 StopIteration异常以终止迭代#xff08;只能往后不能往前#xff09;—— 迭代器协议 协议是一种约定#xff0c;可迭代对象实现了迭代器协议#xff08;for、…迭代器协议 对象必须提供一个 next() 方法执行该方法要么迭代下一项要么就引起一个 StopIteration异常以终止迭代只能往后不能往前—— 迭代器协议 协议是一种约定可迭代对象实现了迭代器协议for、sum、min、max 等使用迭代器协议访问对象 可迭代对象iterable 实现了迭代器协议的对象就是可迭代对象。如何实现迭代器协议对象内部定义 __iter__() 方法。 可作用于 for 循环的对象统称为可迭代对象能作用于 for 循环的数据类型有以下几种 集合数据类型list、str、tuple、dict、tuple 等生成器 generator包括生成器函数和带 yield 关键字的生成器对象 可以用 isinstance() 判断一个对象是否是可迭代对象 from collections import Iterableisinstance([], Iterable) # True isinstance(123, Iterable) # True isinstance(123, Iterable) # False可迭代对象是可迭代的即能被 for 循环但不是迭代器因为 next() 函数无法调用它们 next([1, 2, 3]) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) ipython-input-38-4a6488f07b8e in module() ---- 1 next([1, 2, 3])TypeError: list object is not an iterator # list 对象不是一个迭代器但是可以用 iter() 函数将其转换为迭代器 l [1, 2, 3] ret iter(l) # 转换为迭代器 next(ret) # 调用 next() 函数------------------------ 1迭代器iterator 可以被next()函数调用并不断返回下一个值的对象称为迭代器Iterator。 迭代器对象从集合第一个元素开始访问直到所有元素被访问完才算结束只能往前不能往后。 使用isinstance()判断一个对象是否是Iterator对象 from collections import Iterator isinstance([], Iterator) # list 不是迭代器对象False isinstance(iter([1, 2, 3]), Iterator) # 用 iter() 将 list 转换为迭代器True isinstance((x for x in range(10)), Iterator) # 生成器是迭代器对象迭代器惰性机制 迭代器表示的是一个数据流可以调用 next() 函数不断返回下一个数据直至没有数据抛出 StopIteration。可以说它是一个有序序列但我们不知道序列长度只能通过 next() 函数实现按需计算下一个数据所有它是惰性的只有在需要时才计算返回下一个数据。 为什么要有迭代器 对于有序序列类型使用索引以及 while 循环也难遍历所有元素但是对于无序序列类型字典、集合就会束手无策。 for 循环机制 for 循环是基于迭代器协议提供了一个统一的可遍历所有对象的方法调用对象的 __iter__() 方法将其转换为一个迭代器再调用 __next__() 不断取出序列中元素。相比较迭代器而已for 循环还完成了 StopIteration 的异常工作。 这样一来只要是序列都可以通过 for 循环遍历不管是有序还是无序序列类型。 优缺点 优点 提供一种不依赖于索引的迭代方式惰性计算节省内存每次取值才会加载 缺点 无法获取长度next() 完毕才知道一次性只能往前不能往后 自定义类为迭代器 要想将自定义的类实现为一个迭代器需要在类中实现 __iter__() 和 __next__()方法 __iter__() 方法返回迭代器对象本身__next__() 方法返回容器中下一个元素当超出边界时触发 StopIteration 异常终止迭代器 class Foo(object):def __init__(self,step):self.step stepdef __next__(self):if self.step 0:raise StopIterationself.step - 1return self.stepdef __iter__(self):return self f Foo(6) for i in f:print(i)5 4 3 2 1 0总结 可以 for 循环的对象都是可迭代类型可以作用于 next() 函数的对象都是迭代器类型它表示一个惰性计算的序列list、dict、str 等都是可迭代的但不是迭代器类型因为没有 next() 方法可以用 iter() 函数将其转换为迭代器Python 的 for 循环机制其实质是不断调用 next() 函数实现的但是它超出边界不会触发 StopIterationfor 循环一次将所有数取出迭代器一次只取一个
http://www.hkea.cn/news/14318983/

相关文章:

  • 怎么建公司免费网站自学网页设计要多久
  • 优化游戏卡顿的软件上海网络优化服务
  • 天津商城网站制作服务型网站的营销特点
  • 吴忠网站建设报价做英德红茶的网站
  • 简单的企业网站模板泰安有限公司
  • 网站建设开票计量单位媒体发稿网
  • 网站建设模块分析网站建设公司怎
  • 苏州网站建设 网络推广公司wordpress图片无法居中
  • 织梦网站所有图片不显示安卓应用商店app下载安装
  • 网站建设需要找网站建设公司做吗建设企业网站需要使用哪些技术
  • 小游戏网站代码wordpress瀑布流插件
  • 代做毕设网站可信么银川app购物网站制作公司
  • 移动网站优化云南楚雄地图
  • 开发网站的空间分录百度关键词搜索排行榜
  • 建设工程信息网为官方网站天眼查询企业信息官网在线
  • 东营专业网站建设公司排行书画网站的建设目标
  • 网站开发美学html5自适应手机网站模板
  • 杭州的网站开发网站建设优化方法 s
  • 网站索引量怎么增加数码产品商务网站建设
  • 烟台网站制作效果物流网络平台都有哪些
  • 东莞做企业宣传网站网上网站代码可以下载吗
  • 包装设计网站有哪些龙岩做网站开发哪家厉害
  • 网站建设收费做任务领佣金的网站
  • 驰易网站建设2018年做网站还能
  • 网站上的产品介绍如何做WordPress中菜单变色
  • 网站建设与管理需要什么软件有哪些方面建设网站写需求分析报告
  • 网站建设源代码共享做设计最好的参考网站
  • dw做网站怎么换图片一级域名二级域名
  • 南阳哪有做网站公司郴州网络推广公司
  • 网站制作 flash 修改太原网站制作公司哪家好