【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,如需转载请自行联系原作者

相关文章
|
29天前
|
传感器 数据采集 监控
Python生成器与迭代器:从内存优化到协程调度的深度实践
简介:本文深入解析Python迭代器与生成器的原理及应用,涵盖内存优化技巧、底层协议实现、生成器通信机制及异步编程场景。通过实例讲解如何高效处理大文件、构建数据流水线,并对比不同迭代方式的性能特点,助你编写低内存、高效率的Python代码。
102 0
|
10月前
|
大数据 数据处理 开发者
Python中的迭代器和生成器:不仅仅是语法糖####
本文探讨了Python中迭代器和生成器的深层价值,它们不仅简化代码、提升性能,还促进了函数式编程风格。通过具体示例,揭示了这些工具在处理大数据、惰性求值及资源管理等方面的优势。 ####
|
12月前
|
索引 Python
解密 Python 迭代器的实现原理
解密 Python 迭代器的实现原理
89 13
|
11月前
|
存储 索引 Python
Python 迭代器是怎么实现的?
Python 迭代器是怎么实现的?
95 6
|
12月前
|
机器学习/深度学习 设计模式 大数据
30天拿下Python之迭代器和生成器
30天拿下Python之迭代器和生成器
59 3
|
10月前
|
存储 程序员 数据处理
深入理解Python中的生成器与迭代器###
本文将探讨Python中生成器与迭代器的核心概念,通过对比分析二者的异同,结合具体代码示例,揭示它们在提高程序效率、优化内存使用方面的独特优势。生成器作为迭代器的一种特殊形式,其惰性求值的特性使其在处理大数据流时表现尤为出色。掌握生成器与迭代器的灵活运用,对于提升Python编程技能及解决复杂问题具有重要意义。 ###
|
数据采集 存储 大数据
Python关于迭代器的使用
在Python编程中,数据的处理和操作是核心任务之一。 想象一下,你有一个装满各种颜色球的箱子,你想逐个查看并使用这些球,但又不想一次性将它们全部取出。 这就引出了我们今天要讨论的主题——迭代。
|
11月前
|
存储 大数据 Python
Python 中迭代器与生成器:深度解析与实用指南
Python 中迭代器与生成器:深度解析与实用指南
71 0
|
存储 安全 数据库
Python中的可迭代性与迭代器
在Python中,可迭代性和迭代器是非常重要的概念,它们为我们提供了一种优雅且高效的方式来处理序列和集合数据。本文将深入探讨这些概念,包括可迭代协议以及与异步编程相关的可迭代性和迭代器。
|
存储 安全 数据库
Python中的可迭代性与迭代器
在Python中,可迭代性和迭代器是非常重要的概念,它们为我们提供了一种优雅且高效的方式来处理序列和集合数据。本文将深入探讨这些概念,包括可迭代协议以及与异步编程相关的可迭代性和迭代器。

推荐镜像

更多