码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-09-22 00:09:14      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:python   迭代器   

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

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

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




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


·可演示如下:

>>> 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()函数读取每一行:

>>> 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增加了异常处理的功能,因此不会报错:

>>> 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.通过循环获取迭代器中的内容


·演示如下:

>>> 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循环实现;

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

本文出自 “香飘叶子” 博客,请务必保留此出处http://xpleaf.blog.51cto.com/9315560/1696889

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

标签:python   迭代器   

原文地址:http://xpleaf.blog.51cto.com/9315560/1696889

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!