范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python基础之迭代器

  一.什么是迭代器
  迭代器是用来迭代取值的工具。
  而涉及到把多个值循环取出来的类型有:列表,字符串,元组,字段,集合,打开文件等。通过使用的遍历方式有for···in···,while等,但是,这些方式只适用于有索引的数据类型。为了解决索引取的局限性,python提供了一种 不依赖于索引的取值方式:迭代器
  注意:迭代是通过重复执行的代码处理相似的数据集的过程 并且本次迭代的处理数据要依赖上一次的结果继续往下做 上一次产生的结果为下一次产生的结果的初始状态 如果中途有任何停顿,都不能算是迭代。
  二.可迭代对象
  可迭代对象:但凡内置有__iter__方法的都称为可迭代对象
  常见的可迭代对象:
  1.集合数据类型,如list,tuple,dict,set,str等
  2.生成器,包括生成器和带yield的生成器函数。
  三.如何创建迭代器 """     __iter__() 该方法返回一个迭代器,此处可以返回自己     __next__() 该方法返回下一个迭代器对象 """ class MyNums:     def __iter__(self):         self.num = 1         return self      def __next__(self):         self.num += 1         return self.num   mynums = MyNums() myiter = iter(mynums)  # 通过可迭代对象mynums来生成迭代器 print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
  迭代器是一个包含数个值的对象。
  迭代器是可以迭代的对象,这意味着您可以遍历所有值。
  从技术上讲,在Python中,迭代器是实现迭代器协议的对象,该协议由方法 __iter__()  和 __next__()  组成。
  简而言之,一个类里面实现了__iter__()和__next__()这两个魔法方法,那么这个类的对象就是可迭代对象。
  四.迭代器的优缺点
  1.优点节约内存不依赖索引取值实现惰性计算
  2.缺点无法获取长度(只有在next完毕才知道到底有几个值) 一次性的,只能往后走,不能往前退
  五.迭代器示例 class Stu:      def __init__(self):         self.students = []      def __iter__(self):         return self      def add(self):         name = input("请输入姓名:")         tel = input("请输入电话:")         addr = input("请输入地址:")         new_stu = dict()         new_stu["name"] = name         new_stu["tel"] = tel         new_stu["addr"] = addr         self.students.append(new_stu)      def __next__(self):         return self.students s = Stu()		#创建可迭代的对象 s.add() s.add() s.add() ss=iter(s)	#由可迭代对象生成迭代器 print(next(ss))
  另外,如果类Stu继承了Iterator,那么Stu可以不用实现__iter__()方法from collections.abc import Iterable, Iterator   class Stu(Iterator):      def __init__(self):         self.students = []      # def __iter__(self):     #     return self      def add(self):         name = input("请输入姓名:")         tel = input("请输入电话:")         addr = input("请输入地址:")         new_stu = dict()         new_stu["name"] = name         new_stu["tel"] = tel         new_stu["addr"] = addr         self.students.append(new_stu)      def __next__(self):         return self.students   # 创建对象 s = Stu() # Iterable可以判断一个对象是否是可迭代的对象 print(isinstance(s, Iterable)) s.add() s.add() s.add() ss = iter(s) print(next(ss))
  遍历迭代器
  StopIteration
  如果你有足够的   next()   语句,或者在 for 循环中使用,则上面的例子将永远进行下去。
  为了防止迭代永远进行,我们可以使用   StopIteration   语句。
  在   __next__()   方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误 class MyNums:     def __init__(self):         self.num = 1      def __iter__(self):         return self      def __next__(self):         if self.num <= 10:             self.num += 1             return self.num         else:             raise StopIteration	#防止无穷迭代 mynum=MyNums() myiter=iter(mynum) for i in myiter:     print(i)

都是移动支付,银联推出的云闪付,为什么不敌微信支付宝?作为当前深入大家生活中的移动支付,手机打开轻轻一扫完成支付,方便快捷的支付手段,已经成为了一种习惯。而作为当前的两大移动支付主流方式,微信和支付宝两者之间的竞争也是没少被提及。正如爬虫闲谈数据处理个人公众号yk坤帝获取更多学习资料之前我们讨论了一下请求和响应,接下来几天我们都会讨论对数据的处理。接触了爬虫这个领域,大家肯定都听过正则表达式的鼎鼎大名,不过今天我们暂时不谈正则芯片是大国的象征人民日报评我国芯片发展芯片的重要性有目共睹了。没有了他,就连华为这样的巨头都寸步难行中兴跪地求饶中小企业寒蝉鸣泣消费者满脸愁容电子消费类全部涨价国家的工业系统差点崩溃。有了他,才能苹果发布折叠屏手机?网友制作新机概念图,有安卓那味了近几年,三星和华为等手机大厂都推出了折叠屏手机,但是却唯独没有苹果的身影。所以,当下有不少网友也在呼吁苹果推出折叠屏手机。近日,有人制作了iPhoneFlip概念图,同时还在图中标小米自研超级拟人技术,雷军喊出了180000米粉的名字IT之家8月14日消息在小米手机十周年之际,小米将3。7亿元返还给小米手机1首批用户,每人赠送1999元无门槛红包。据小米公司公众号消息,雷军还为初代小米手机用户录了一段话,而实际5000元预算只能买来网游本?大人,时代变了网上流传着一句话叫五千预算进某吧,加钱加到一万八。通常我们在买大件产品之前,都会听信很多朋友的意见,导致最后没拿住自己的主意,不仅钱包被掏空,还买来一个性能过剩的产品。其实要避免这全球电视市场增速放缓,OLED和MiniLED却会迎来逆势增长自新冠疫情爆发以来,宅经济带动了电视市场连续四个季度的高速增长。但如今,宅经济的影响逐渐减弱,电视市场的需求也逐渐减少。据数据机构统计,今年上半年,全球电视市场出货数量规模为1。0HIFI初烧实惠套装Hifi包括1。音源。一般cd盘和无损歌曲例如ape,flac格式即可满足。2。线材。尽量买短的,用料好的。注意阻抗75欧。3。转盘。包含cd转盘和数字转盘。一般来说同价位cd音质真无线蓝牙耳机探底,百元带显示屏!体验aigoT23随着蓝牙优势凸显,以及手机厂商取消3。5mm耳机孔的设计,身边越来越多的人戴上了蓝牙耳机。只是市场上的无线耳机品类繁多,看得人眼花缭乱,中高端产品数百上千元,入门几十上百元,而且这郡旗智能指纹锁Q1,您的贴心卫士随着人工智能技术的快速发展和人们对门锁需求的日趋改变,智能门锁在国内有了相对较高的普及率,伴随着消费经济的逐步增长,越来越多的消费者追求智能门锁的智能化设计。作为智能门锁高端品牌,千元党手机真香警告!荣耀Play5TPro超清影像大内存还有快充在大众的固有印象中,千元档手机因为受成本限制,配置和品质都略显短板,在用户眼中略显局促。但其实随着如今手机市场的细分,不乏一些出实力色的千元国产手机蓬勃涌现。就比如这款荣耀Play
新疆丫头子他是我的心,他是我的肝,他是我生命的四分之三中国哪个地方的人最能吃辣?口里人一定会说四川人重庆人湖南人这个时候新疆丫头子们一定会站出来她们会告诉你全国吃辣排行榜上必须要有新疆人的姓名她们会用一碗新疆cao米粉分分钟教你重新做5。19游新疆那拉提为你准备了一场浪漫的徒步活动很多人都知道新疆有个那拉提但那拉提有个沃尔塔交塔却鲜为人知沃尔塔交塔,一个只需一眼就能爱上的地方,更被人们称为我爱她,找她的地方,也是一个极美的婚纱摄影基地。这里集坡地幽壑盘山密林全面取消!兰西城市群建设传来重磅消息5月13日,甘肃省人民政府与青海省人民政府在甘肃省兰州市签订深化甘青合作共同推动兰州西宁城市群高质量协同发展框架协议,两省将共同建设兰西城市群1小时经济圈,加快兰西城市群市场一体化黑寡妇英国定档十月,比北美提前一周,聚焦娜塔莎特工往事5月13日,据外媒报道,漫威电影黑寡妇在英国的上映时间定为10月28日,比定档于北美的11月6日提前一周。作为复仇者联盟团队当中的核心分子,美国队长钢铁侠等人都拥有自己的独立电影,游丝绸之路,赏民俗风情宁静清澈的湖水仿若远离尘嚣的童话世界如茵的草场,挺拨的青松大片的山花,成群的牛羊夏天的新疆是最美的季节之一因为在夏天不仅能观赏雪山流水森林草地繁花夜空中最闪亮迷人的星更能让人沉醉于烟台的樱桃6元一斤,比进口的车厘子好吃,228国道冒出了收费站6月1日,晴,南风34级,常州出发,一人一车环山东半岛,渤海湾骑游第12天。早晨6点多钟,从蓬莱市区尚客优宾馆出发,经登州路右拐,出城就上了228国道,郊区国道边满是果园,苹果树刚莱州。东营。滨州市,胜利黄河大桥。516国道都没有收费站,一路畅通6月3日,常州出发,一人一车,环山东半岛,渤海湾骑行第14天。昨天晚上住在寿光市营里镇,今早600从旅馆门口的309省道出发,几十公里转上516国道一直向北骑,516国道只有双向4江苏连云港,山东日照市,路宽的不收费,路窄的一个市有3个收费站5月24日,多云,常州出发,一人一车,环山东半岛。渤海湾骑行第4天。昨晚住赣榆区海头镇204国道边的快捷宾馆,今早5时出发,从旅馆门口沿204国道一直向北骑,中午到了日照市汽车站旁青岛市,烟台市,228国道边重大工程多,青岛100多年前属于即墨的5月26日,晴,常州出发,一人一车,环山东半岛。渤海湾骑行第6天。早晨5时,从青岛市黄岛228国道边旅馆出发,出门就骑上了228国道,过城阳区,即墨区,下午4时到莱阳市穴坊镇路边旅常州骑秦皇岛第16天。山东往天津不能走228国道。应绕道滨州6月5日,常州出发,一人一车,环山东半岛,渤海湾骑行第16天。昨天晚上住228国道边沧州市南排河镇旅馆,担心再遭遇昨天的大堵车,早上5点钟就出发,沿着228国道走向,10个多小时,烟台市,莱州市,经济复苏快,同一条228国道,63公里两个收费站6月2日,阴,西北风45级,一人一车,环山东半岛,渤海湾骑游第13天。昨晚住莱州市汽车站旁边的速8酒店,早晨6点骑出宾馆大门不远,就拐上了206国道。还是那条206国道与228国道