Python 迭代器
时间:2021-08-12
本文章向大家介绍Python 迭代器,主要包括Python 迭代器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
迭代器是一种对象,该对象包含值的可计数数字。
迭代器是可迭代的对象,这意味着您可以遍历所有值。
从技术上讲,在 Python 中,迭代器是实现迭代器协议的对象,它包含方法 __iter__() 和 __next__()。
迭代器 VS 可迭代对象(Iterable)
列表、元组、字典和集合都是可迭代的对象。它们是可迭代的容器,您可以从中获取迭代器(Iterator)。
所有这些对象都有用于获取迭代器的 iter() 方法:
mytuple=('apple','banana','cherry') #iter() 函数用来生成迭代器。法 #next() 返回迭代器的下一个项目。 #next() 函数要和生成迭代器的 iter() 函数一起使用。 myit=iter(mytuple) print(next(myit))#apple print(next(myit))#banana print(next(myit))#cherry #遍历迭代器 for x in mytuple: print(x) #for 循环实际上创建了一个迭代器对象,并为每个循环执行 next() 方法。 #创建迭代器 #要把对象/类创建为迭代器,必须为对象实现 __iter__() 和 __next__() 方法。 #正如您在 Python 类/对象 一章中学到的,所有类都有名为 __init__() 的函数,它允许您在创建对象时进行一些初始化。 #__iter__() 方法的作用相似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。 #__next__() 方法也允许您执行操作,并且必须返回序列中的下一个项目。 #创建一个返回数字的迭代器,从 1 开始,每个序列将增加 1(返回 1、2、3、4、5 等): class MyNumbers: def __iter__(self): self.a=1 return self def __next__(self): x=self.a self.a+=1 return x myclass=MyNumbers() myiter=iter(myclass) print(next(myiter))#1 print(next(myiter))#2 print(next(myiter))#3 print(next(myiter))#4 print(next(myiter))#5 #StopIteration #如果你有足够的 next() 语句,或者在 for 循环中使用,则上面的例子将永远进行下去。 #为了防止迭代永远进行,我们可以使用 StopIteration 语句。 #在 __next__() 方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误: class YouNumbers: def __iter__(self): self.a=1 return self def __next__(self): if self.a<=20: x=self.a self.a+=1 return x else: raise StopIteration youclass=YouNumbers() youiter=iter(youclass) for x in youiter: print(x)
原文地址:https://www.cnblogs.com/lvlisn/p/15132686.html
- Windows PowerShell 工具
- 游戏开发之在UE4中编写C++代码控制角色
- Visual Studio 64位应用程序编译
- Windows 7 上安装Visual Studio 2015 失败解决方案
- Silverlight调用本机exe程序
- 游戏开发之UE4添加角色到场景中
- 人工智能取代人类?高通副总裁这样说
- Disque:Redis之父新开源的分布式内存作业队列
- mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项
- EasyStack郭长波连任OpenStack基金会独立董事
- VMware Fusion 中如何复制centos/linux虚拟机
- 浅谈国外航空发动机大数据应用
- asp.net mvc SelectList 的selected 失效及解决方案
- 类极客公园火箭发射“返回顶部”jQuery效果(WordPress代码教程)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- HBase监控
- CVPR19-Deep Stacked Hierarchical Multi-patch Network for Image Deblurring
- HTTP缓存机制与Cookie
- 52. Vue使用watch监听网页的URL变化
- 如何设计一个秒杀系统
- SQL注入之dns回显注入
- 只要一行代码,实现五种 CSS 经典布局
- Flutter-引入第三方依赖包
- Hive操作——删除表(drop、truncate)
- 如何搭建redis集群 --- redis-cluster
- IO之Standard IO
- XSS原理详解
- IO之Formatted IO
- 51. Vue名称案例-使用watch监听数据变化
- 安装KubeSphere