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

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



本文转自 xpleaf 51CTO博客,原文链接:http://blog.51cto.com/xpleaf/1696889,如需转载请自行联系原作者

相关文章
|
5月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
355 1
|
6月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
343 2
|
7月前
|
传感器 数据采集 监控
Python生成器与迭代器:从内存优化到协程调度的深度实践
简介:本文深入解析Python迭代器与生成器的原理及应用,涵盖内存优化技巧、底层协议实现、生成器通信机制及异步编程场景。通过实例讲解如何高效处理大文件、构建数据流水线,并对比不同迭代方式的性能特点,助你编写低内存、高效率的Python代码。
298 0
|
6月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
311 0
|
大数据 数据处理 开发者
Python中的迭代器和生成器:不仅仅是语法糖####
本文探讨了Python中迭代器和生成器的深层价值,它们不仅简化代码、提升性能,还促进了函数式编程风格。通过具体示例,揭示了这些工具在处理大数据、惰性求值及资源管理等方面的优势。 ####
|
索引 Python
解密 Python 迭代器的实现原理
解密 Python 迭代器的实现原理
164 13
|
存储 索引 Python
Python 迭代器是怎么实现的?
Python 迭代器是怎么实现的?
182 6
|
机器学习/深度学习 设计模式 大数据
30天拿下Python之迭代器和生成器
30天拿下Python之迭代器和生成器
131 3
|
存储 程序员 数据处理
深入理解Python中的生成器与迭代器###
本文将探讨Python中生成器与迭代器的核心概念,通过对比分析二者的异同,结合具体代码示例,揭示它们在提高程序效率、优化内存使用方面的独特优势。生成器作为迭代器的一种特殊形式,其惰性求值的特性使其在处理大数据流时表现尤为出色。掌握生成器与迭代器的灵活运用,对于提升Python编程技能及解决复杂问题具有重要意义。 ###
|
存储 安全 数据库
Python中的可迭代性与迭代器
在Python中,可迭代性和迭代器是非常重要的概念,它们为我们提供了一种优雅且高效的方式来处理序列和集合数据。本文将深入探讨这些概念,包括可迭代协议以及与异步编程相关的可迭代性和迭代器。

推荐镜像

更多