迭代器

栏目: Python · 发布时间: 8年前

内容简介:迭代器

概念

我们已经知道,可以直接作用于for 循环的数据类型有一下几种:

1、一类是集合数据类型,如list、tuple、dict、set、str等;

2、一类是generator(生成器),包括生成器和带yield的generator funcation;

(带yield的函数生成器和列表生成器)

这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。

可以使用isinstance()判断一个对象是否是Iterable对象:

创建迭代器对象的方法

一、iter()函数获得一个Iterator对象。

list、tuple、dict、set、str等数据类型可以用iter()函数转换成迭代器

例如:


 1 1、正常循环一个序列:
 2 for i in [1,2,3,4,5,6,7,8,9]
 3    pass
 4     .....
 5 
 6 2、用迭代器循环一个序列:
 7 #首先获得Iterator对象:
 8 it = iter([1,2,3,4,5])
 9 
10 #循环对象:
11 while True:
12     try:
13         #获得下一个值:
14         x = next(it)
15     except  StopIteration:
16         #遇到StopIteration就退出循环:
17         break
18 
19 
20 #注意:上下两个完全等价

列表循环

二、跌倒器就是可以迭代的对象。


 1 def myrange(arg):
 2     start = 0
 3     while True:
 4         if start > arg:
 5             return
 6         yield  start
 7         start += 1
 8 ret = myrange(3)
 9 r = ret.__next__()  #进入函数,找到yield,获取yield后面的数据,每运行一次,生成器就会往下执行一个数值:
10 print(r)
11 r = ret.__next__()
12 print(r)
13 r = ret.__next__()
14 print(r)
15 r = ret.__next__()
16 print(r)

迭代器实例

三、用途:

socket的时候会用到,但是代码复杂性增加

迭代器就类似于概念性的一个知识点

迭代器就是由__next__可以一个一个提取的,类似于for循环的,逐步取值的,就叫做迭代器。

例如
1、一个列表,然后用for进行遍币,其实就是执行了r = ret.__next__();
2、当迭代到最后一个值时,按理说取完后会报错的,但是由于封装到foread

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Visual LISP程序设计

Visual LISP程序设计

李学志 / 清华大学 / 2006-5 / 29.00元

本书系统地介绍了AutoCAD最新版本(2006)的Visual LISP程序设计技术。全书共分13章。前3章介绍AutoLISP语言的基础知识,第4章介绍Visual LISP的开发环境,第5~7章介绍程序的编辑、调试和设计的方法与技巧,第8章介绍如何定义新的AutoCAD命令及创建图层、线型、文字样式、剖面线、尺寸标注等各种AutoCAD对象,以及如何实现参数化图形设计的方法和技术,第9章介绍......一起来看看 《Visual LISP程序设计》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具