【Python之旅】第二篇(九):迭代器

简介:

说明:关于Python中迭代器的解释

    Iterator是迭代器的意思,它的作用是一次产生一个数据项,直到没有为止。这样在 for 循环中就可以对它进行循环处理了。那么它与一般的序列类型(list, tuple等)有什么区别呢?它一次只返回一个数据项,占用更少的内存。但它需要记住当前的状态,以便返回下一数据项。它是一个有着next()方法的对象。而序列类型则保存了所有的数据项,它们的访问是通过索引进行的。

    举个前面的例子来说就像readlines和xreadlines的区别,readlines是一次性读入放入内存中,而xreadlines是每次只读取一行放入内存中,这意味着,在读取当前行的时候,需要有相应记数器记下当前的读取状态,暂时可以先这样去理解。




1.实例1:使用next()函数来读取迭代器中的数


·可演示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
>>> a = iter(range( 10 ))    #创建一个迭代器
>>> a
<listiterator object at  0x7f251917ec10 >
>>> a.next()
0
>>> a.next()
1
>>> a.next()
2
>>> a.next()
3
>>> a.next()
4
>>> a.next()
5
>>> a.next()
6
>>> a.next()
7
>>> a.next()
8
>>> a.next()
9
>>> a.next()
Traceback (most recent call last):
   File  "<stdin>" , line  1 in  <module>
StopIteration

·a存放的是迭代器中的地址,next()可以读取下一个位置的元素;

·next()函数不会判断迭代器的结束,只能根据输出异常来判断迭代的结束;




2.readline的简单解释


·文件操作也可以通过next()函数读取每一行:

1
2
3
4
5
6
7
8
9
10
11
>>> f = file( 'student_info.txt' )
>>> f.next()
'stu1101 mingjia.xu 275896019@qq.com 263 SystemAdmin 18810404260\r\n'
>>> f.next()
'stu1102 Yangjiansong jason@s156.com A8music SystemAdmin 13601247960\r\n'
>>> f.next()
'stu1103 zouxinkai zouxinkai_2006@126.com jishubu systemadmin 1861214111'
>>> f.next()
Traceback (most recent call last):
   File  "<stdin>" , line  1 in  <module>
StopIteration


·readline也是通过上面迭代的方式来处理文件内容,只是readline增加了异常处理的功能,因此不会报错:

1
2
3
4
5
6
7
8
9
>>> f = file( 'student_info.txt' )
>>> f.readline()
'stu1101 mingjia.xu 275896019@qq.com 263 SystemAdmin 18810404260\r\n'
>>> f.readline()
'stu1102 Yangjiansong jason@s156.com A8music SystemAdmin 13601247960\r\n'
>>> f.readline()
'stu1103 zouxinkai zouxinkai_2006@126.com jishubu systemadmin 1861214111'
>>> f.readline()
''




3.通过循环获取迭代器中的内容


·演示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> a = iter(range( 10 ))
>>>  while  True:
...  a.next()
... 
0
1
2
3
4
5
6
7
8
9
Traceback (most recent call last):
   File  "<stdin>" , line  2 in  <module>
StopIteration

·只能通过类似while True循环实现;

·通过该方法可以获取迭代器中的内容,并进一步对异常情况进行处理。

相关文章
|
缓存 索引 Python
Python系列学习第二章-Python语言基本语法元素二
hello,这里是Token_w的文章,主要讲解python的基础学习,希望对大家有所帮助 整理不易,感觉还不错的可以点赞收藏评论支持,感谢!
127 0
|
程序员 Python
Python系列学习第二章-Python语言基本语法元素一
hello,这里是Token_w的文章,主要讲解python的基础学习,希望对大家有所帮助 整理不易,感觉还不错的可以点赞收藏评论支持,感谢!
109 0
|
9月前
|
JSON C++ 数据格式
【Python 基础教程 08】全面入门到精通:Python3 字符串操作实战教程与深度指南
【Python 基础教程 08】全面入门到精通:Python3 字符串操作实战教程与深度指南
181 0
|
9月前
|
存储 C语言 ice
【Python指南 | 第二篇】基础语法及实战(一)
【Python指南 | 第二篇】基础语法及实战(一)
59 0
|
9月前
|
C语言 Python
【Python指南 | 第三篇】基础语法及实战(二)
【Python指南 | 第三篇】基础语法及实战(二)
59 0
|
9月前
|
机器学习/深度学习 算法 搜索推荐
Python 进阶指南(编程轻松进阶):十三、性能测量和大 O 算法分析
Python 进阶指南(编程轻松进阶):十三、性能测量和大 O 算法分析
71 0
|
机器学习/深度学习 Python
python之for循环和while循环的使用教程,小白也能学会的python之路
python之for循环和while循环的使用教程,小白也能学会的python之路
|
运维 数据可视化 数据挖掘
python学习之旅(开篇)
python学习之旅(开篇)
99 0
|
C++ Python
C++入门:与Python对比第一弹
因为下学期会学c++面向对象编程,还有接下来的项目中可能会用到c++,所以决定先提前学习下,顺便与python做个比对,还是有许多相似之处的。=v= 下面是两个简单例子对比。
1123 0
|
机器学习/深度学习 自然语言处理 算法
【进阶Python】第一讲:开篇
不管是否喜欢Python这门编程语言,它都是目前最受欢迎的编程语言之一。尤其是在计算机视觉、自然语言、数据分析等领域,它具有不可撼动的地位。有同学提及Python会不懈的说“这门编程语言太容易了”,但是我个人认为它是一门“会用容易,用好困难”的编程语言。开设【进阶Python】这个系列不会去重复的讲解Python的基础语法,会从Python的一些高阶用法开始,讲解一些平时开发过程中用的较少或者容易忽略的部分。开设这个系列的目的主要有两点:第一:把自己开发过程中的一些心得和经验总结下来。第二:如果能够帮助更多的Python学习者,那就更加荣幸了。
【进阶Python】第一讲:开篇

热门文章

最新文章

推荐镜像

更多