Python 迭代器(Iterator)
时间:2019-10-31
本文章向大家介绍Python 迭代器(Iterator),主要包括Python 迭代器(Iterator)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
版权所有,未经许可,禁止转载
章节
- Python 介绍
- Python 开发环境搭建
- Python 语法
- Python 变量
- Python 数值类型
- Python 类型转换
- Python 字符串(String)
- Python 运算符
- Python 列表(list)
- Python 元组(Tuple)
- Python 集合(Set)
- Python 字典(Dictionary)
- Python If … Else
- Python While 循环
- Python For 循环
- Python 函数
- Python Lambda
- Python 类与对象
- Python 继承
- Python 迭代器(Iterator)
- Python 模块
- Python 日期(Datetime)
- Python JSON
- Python 正则表达式(RegEx)
- Python PIP包管理器
- Python 异常处理(Try…Except)
- Python 打开文件(File Open)
- Python 读文件
- Python 写文件
- Python 删除文件与文件夹
Python 迭代器(Iterator)
迭代器是一个包含有限数量值的对象。
迭代器是一个可以被迭代的对象,可以遍历迭代器中的所有值。
从技术上讲,在Python中,迭代器是实现迭代器协议的对象,该协议由方法__iter__()
和__next__()
组成。
可迭代的数据类型
列表、元组、字典和集合都是可迭代的对象,可以从其中获得迭代器。
所有这些对象都可用iter()
方法获取迭代器:
示例
从元组中获取一个迭代器,遍历并打印每个值:
mytuple = ("自行车", "汽车", "高铁")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))
字符串也是可迭代对象,可以从中获取迭代器:
示例
使用迭代器遍历字符串:
mystr = "自行车"
myit = iter(mystr)
print(next(myit))
print(next(myit))
print(next(myit))
for循环迭代
我们也可以使用for循环来遍历一个迭代器:
示例
迭代元组的值:
mytuple = ("自行车", "汽车", "高铁")
for x in mytuple:
print(x)
示例
迭代字符串的字符:
mystr = "自行车"
for x in mystr:
print(x)
for
循环内部实际上进行了迭代器的获取,及next()
方法的调用。
创建迭代器
一个对象要创建迭代器,变成可迭代的,必须实现方法:__iter__()
和__next__()
。
__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))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
StopIteration
上面示例next()
调用将永远继续,我们可以使用StopIteration
语句停止迭代。
在__next__()
方法中,我们可以根据迭代次数添加终止条件来引发错误:
示例
迭代20次后停止:
class MyNumbers:
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
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)
原文地址:https://www.cnblogs.com/haibianren/p/11770897.html
- LaTeX内容总结
- (60) 随机读写文件及其应用 - 实现一个简单的KV数据库 / 计算机程序的思维逻辑
- java反射机制
- 突发 |“永恒之蓝”漏洞紧急应对方案
- 摩拜单车爬虫源码及解析
- 用Python实现微信接口(三)
- (61) 内存映射文件及其应用 - 实现一个简单的消息队列 / 计算机程序的思维逻辑
- ContentProvider简介
- (62) 神奇的序列化 / 计算机程序的思维逻辑
- js的回调函数详解
- 用Python实现微信接口(一)
- MYSQL常见错误及其解决方式
- 用Python实现微信接口(二)
- (63) 实用序列化: JSON/XML/MessagePack / 计算机程序的思维逻辑
- 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 数组属性和方法
- 原理 + 代码|手把手教你用Python实现智能推荐算法
- 机器学习必刷题-基础概念篇(1):为什么用AUC做评价指标?
- 机器学习必刷题-手撕推导篇(3):FM与softmax
- Python面试必刷题系列(4)
- SQL面试必刷题(1) Case When
- 张量的数学运算
- 数据结构高频面试题-图
- nn.functional和nn.Module
- 20分钟学会DBSCAN聚类算法
- Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试
- Dataset和DataLoader
- 3分钟短文 | PHP 删除目录下所有的文件,这3种写法哪个有bug?
- 【Hive】DDL 与 DML 操作
- 模型层
- 损失函数