• 零基础学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
    '
    >>> handler.readline()
    'efgh
    '
    >>> handler.readline()
    'ijklstrstr
    '
    >>> 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
    '
    >>> handler.__next__ ()
    'efgh
    '
    >>> handler.__next__ ()
    'ijklstrstr
    '
    >>> 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-目录


     

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

  • 相关阅读:
    时间复杂度为O(1)的Iveely搜索缓存策略
    数据挖掘十大算法决策树的实现
    编写有效的C# 代码(一)
    数据挖掘十大算法Kmeans之图像区域选择
    asp.net 导出 Excel
    使用XMLSpyDocEditPlugIn2.dll,页面加载失败
    多线程Thread的使用,并使用Thread传参
    ajaxpro.2.dll的使用
    论道WP(二):如何学习WP开发?
    IList<T> 转换成 DataSet
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896753.html
Copyright © 2020-2023  润新知