`
李灵晖-raylee
  • 浏览: 138598 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

零基础学python-13.1 迭代器简介与文件迭代器

 
阅读更多

1.迭代器简介

可迭代对象:列表、元组、字符串

迭代工具:for循环、列表解析、in成员关系测试、map内建函数

下面是一些例子:

>>> for item in (1,3,4,5):
	print(item)

	
1
3
4
5
>>> for alpha in 'abcde':
	print(alpha)

	
a
b
c
d
e
>>> for item in [1,2,3,4]:
	print(item)

	
1
2
3
4
>>> 


上面的例子都是使用for循环结合in成员关系测试来迭代列表、元组与字符串

2.文件迭代器

说到文件迭代,一般会使用for与readline结合起来

>>> handler=open('output_file.txt')
>>> handler.readline()
'abcd\n'
>>> handler.readline()
'efgh\n'
>>> handler.readline()
'ijklstrstr\n'
>>> handler.readline()
'nn'
>>> handler.readline()
''


>>> handler=open('output_file.txt')
>>> for line in handler.readlines():
	print(line)

abcd

efgh

ijklstrstr

nn
>>> 


注意:我们上面第一个程序一直调用handler.readline(),如果到了末尾,他一直返回空,而我们使用for加上handler.readlines(),如果到达底部,则直接停止

在文件里面也有一个内建函数__next__可以达到类似的效果

>>> handler=open('output_file.txt')
>>> handler.__next__ ()
'abcd\n'
>>> handler.__next__ ()
'efgh\n'
>>> handler.__next__ ()
'ijklstrstr\n'
>>> handler.__next__ ()
'nn'
>>> handler.__next__ ()
Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    handler.__next__ ()
StopIteration
>>> handler.close ()
>>> 


但是有一点需要注意,使用__next__的时候,当到达底部,他会报错

__next__是通过捕捉StopIteration来确定是否离开

最后我们来讨论一下性能的问题:

1.当文件过大的时候怎么读取(至少100M)

因为handler.readlines()方法是一次性把整个文件加载到内存里面去,所以这个方法不适合

在这种情况下,一般是一行行的来读取,我们下面提供两种方法:

>>> for line in handler:
	print(line,end='')

	
abcd
efgh
ijklstrstr
nn
>>> 
>>> handler=open('output_file.txt')
>>> while True:
	line=handler.readline()
	if not line:
		break
	print(line,end='')

	
abcd
efgh
ijklstrstr
nn
>>> handler.close ()
>>> 


在上面的两种方法中,我们更加推荐第一种for...in...,这种方法更加快捷而且简洁

总结:这一章节主要简单介绍了迭代器,以及文件迭代器的使用,性能的简单介绍

这一章节就说到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-目录


版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    Python学习笔记。。。

    - 迭代器协议(`__iter__()`和`__next__()`)。 - **5.2 生成器** - 通过`yield`关键字创建生成器。 - 生成器的优点:节省内存。 - **5.3 模式** - 常见的迭代模式如遍历列表等。 - **5.4 宝藏** - 迭代器在...

    python_中文手册

    - **9.9 迭代器**:介绍了迭代器的概念,包括创建和使用迭代器的方法。 - **9.10 发生器**:讲解了生成器的用法,包括如何使用yield语句来创建生成器。 - **9.11 生成器表达式**:介绍了生成器表达式的概念,这是...

    Python3高级核心技术97讲-视频课程资源网盘链接提取码下载 .txt

    3. **迭代器与生成器**:迭代器的概念、实现方式;生成器的定义、使用方法及其与迭代器的区别。 4. **元类**:元类的概念、实现方式及应用场景。 5. **协程**:协程的概念、实现方式及其与线程、进程的区别。 ### ...

    python学习笔记第二版

    本书不仅覆盖了Python语言的基础知识,还深入探讨了许多高级主题,如迭代器、生成器、装饰器、元类等。同时,本书还包括了大量的标准库介绍,帮助读者更好地利用Python的强大功能解决实际问题。

    python基础教程,学完这个你就入门了.docx

    生成器是一种特殊的迭代器,可以用来生成一系列的值。 ```python def simple_generator(): yield 1 yield 2 yield 3 gen = simple_generator() for i in gen: print(i) ``` ##### 15.3 多线程和多进程 ...

    Python 核心编程 第二版

     8.11 迭代器和iter()函数   8.12 列表解析   8.13 生成器表达式   8.14 相关模块   8.15 练习   第9章 文件和输入输出   9.1 文件对象   9.2 文件内建函数(open()和file())   9.3...

    Python编程入门经典

    9.4 为循环生成迭代器 133 9.5 使用字典的特殊字符串 替换 135 9.6 重要模块 137 9.6.1 getopt——从命令行中得到 选项 137 9.6.2 使用一个以上的进程 139 9.6.3 线程——在相同的进程中 完成多个工作 141 9.7 本章...

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

     第3章 python基础   3.1 语句和语法   3.1.1 注释(#)   3.1.2 继续(\)   3.1.3 多个语句构成代码组(:)   3.1.4 代码组由不同的缩进分隔   3.1.5 同一行书写多个语句(;)   3.1.6 ...

    Python核心编程(第二版).pdf (压缩包分2部分,第一部分)

     第3章 python基础   3.1 语句和语法   3.1.1 注释(#)   3.1.2 继续(\)   3.1.3 多个语句构成代码组(:)   3.1.4 代码组由不同的缩进分隔   3.1.5 同一行书写多个语句(;)   3.1.6 ...

    Python Cookbook

    17.7 用迭代器逐个访问Python序列的元素 608 17.8 从Python可调用的C函数中返回None 611 17.9 用gdb调试动态载入的C扩展 613 17.10 调试内存问题 614 第18章 算法 616 引言 616 18.1 消除序列中的重复 619 ...

    莫烦PYTHON——Python3基础教程 学习心得(4)

    - `map`函数接受一个函数和一个或多个可迭代对象作为参数,对每个元素应用该函数,返回一个包含所有结果的迭代器。 13.4 **copy & deepcopy**: - `copy`模块提供了浅复制功能,只复制对象的最外层引用,对于嵌套的...

    大数据学习笔记

    - **1.1 Spark简介与发展** - **背景**:随着大数据处理需求的增长,传统的Hadoop MapReduce框架虽然提供了强大的计算能力,但在处理速度、易用性和灵活性方面存在一定的局限性。 - **Spark的诞生**:Spark作为一...

    Android应用开发揭秘pdf高清版

    10.2 文件管理器 10.3 通讯录 10.4 音乐播放器 10.5 天气预报 10.6 个人地图 10.7 Widget日历 10.8 小结 第11 章Android游戏开发实例 11.1 手机游戏开发简介 11.2 游戏框架设计 11.3 地图设计 11.4 主角设计 11.5 ...

    ruby语法基础教程

    §5.2.4 编写自己的迭代器 42 第六章 表达式 42 §6.1 运算符 43 §6.2 命令替换 44 §6.3 赋值运算符 44 §6.4 并行赋值 46 §6.5 嵌套赋值 47 §6.6 其他赋值 47 §6.7 条件运算 47 §6.8 case表达式 48 §6.9 ...

    Ruby入门教程

    - **5.2.4 编写自己的迭代器**:可以通过定义新的迭代器方法来自定义遍历逻辑。 #### 六、表达式 **6.1 运算符** 包括算术运算符、比较运算符等。 **6.2 命令替换** 允许在命令行中执行外部命令并将结果作为...

    C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf

    C6.1.1 常见的迭代器操作 481 C6.1.2 使用迭代器操作 482 C6.1.3 实现迭代器 483 C6.2 迭代器的高级功能 485 第17章 堆 489 17.1 ADT堆 490 17.2 堆的基于数组的实现 493 17.2.1 基于数组的堆操作的算法 494 ...

    代码之美(中文完整版).pdf

    第19章 NumPy中的多维迭代器 19.1 N维数组操作中的关键挑战 19.2 N维数组的内存模型 19.3NumPy迭代器的起源 19.4 迭代器的设计 19.5 迭代器的接口 19.6 迭代器的使用 19.7 结束语 第20章 NASA火星漫步者任务中的高...

    ruby初学者教程(对初学者很有帮助)

    ### Ruby语言介绍与基础知识 #### 一、Ruby语言概述 **1.1 Ruby的历史** Ruby是一种面向对象的脚本语言,由日本人松本行弘(Matsumoto Yukihiro)于1993年开始开发。起初,Ruby是作为一种兴趣项目而诞生的,但...

Global site tag (gtag.js) - Google Analytics