zoukankan      html  css  js  c++  java
  • 零基础学python-13.4 文件上使用列表解析与列表解析扩展

    这一章节我们来讨论一下文件上使用列表解析与列表解析扩展

    1.文件上使用列表解析

    在处理文件里面文本的时候,我们一般都会遇到比较麻烦的场景,如:去除所有换行符,我们一般都会想到下面的办法

    >>> hanlder=open('output_file.txt')
    >>> aList=[]
    >>> for line in hanlder:
    	aList.append (line.rstrip())
    
    	
    >>> aList
    ['aaaaa', 'bbbbb', 'ccccc', 'ddddd', 'fffff']
    >>> 

    但是我们可以通过列表解析,简洁的处理上面的问题

    >>> hanlder=open('output_file.txt')
    >>> bList=[line.rstrip () for line in hanlder]
    >>> bList
    ['aaaaa', 'bbbbb', 'ccccc', 'ddddd', 'fffff']
    >>> hanlder.close ()
    >>> 

    在上面的方法里面其实我们也可以使用分片方法line[:-1],但是需要确定每一行文本的正确性

    其实,第二种方法里面,python替我们做了很多隐含的工作,而且由于它是使用c语言操作,因此,它的运行速度比相同功能的python语句更快,更高效率

    我们下面再举一些例子:

    把字符串变成大写

    >>> hanlder=open('output_file.txt')
    >>> bList=[line.rstrip ().upper() for line in hanlder]
    >>> bList
    ['AAAAA', 'BBBBB', 'CCCCC', 'DDDDD', 'FFFFF']
    >>> hanlder.close ()


    替换某些字符
    >>> hanlder=open('output_file.txt')
    >>> bList=[line.rstrip ().replace('a','T').upper() for line in hanlder]
    >>> bList
    ['TTTTT', 'BBBBB', 'CCCCC', 'DDDDD', 'FFFFF']
    >>> hanlder.close ()
    >>> 

    2.扩展

    1)我们沿用上面的txt文件,但是我们只需要输出带有a开头的句子

    这里我们就需要在列表解析里面加上if的使用

    >>> hanlder=open('output_file.txt')
    >>> bList=[line.rstrip () for line in hanlder if line[0]=='a']
    >>> bList
    ['aaaaa', 'accccc', 'afffff']
    >>> hanlder.close ()
    >>> 

    2)使用多个列表解析

    >>> [x+y for x in 'abc' for y in 'efg' ]
    ['ae', 'af', 'ag', 'be', 'bf', 'bg', 'ce', 'cf', 'cg']
    >>> 

    >>> [x+y for x in [1,2,3] for y in [3,4,5] ]
    [4, 5, 6, 5, 6, 7, 6, 7, 8]
    >>> 
    上面我们同时解析两个序列,然后进行运算

    我们还可以扩展到多个序列上面

    >>> [x+y+z for x in [1,2,3] for y in [3,4,5] for z in [6,7,8]]
    [10, 11, 12, 11, 12, 13, 12, 13, 14, 11, 12, 13, 12, 13, 14, 13, 14, 15, 12, 13, 14, 13, 14, 15, 14, 15, 16]
    >>> 


    >>> for x in [1,2,3]:
    	for y in [3,4,5]:
    		for z in [6,7,8]:
    			print(x+y+z,end=',')
    
    			
    10,11,12,11,12,13,12,13,14,11,12,13,12,13,14,13,14,15,12,13,14,13,14,15,14,15,16,
    >>> 


    其实上面的代码实现了多重循环的嵌套,然后形成新的列表



    总结:这一章节我们讨论了文件上面使用列表解析,以及列表解析的扩展

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

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

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

     


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

  • 相关阅读:
    WHERE col1=val1 AND col2=val2;index exists on col1 and col2, the appropriate rows can be fetched directly
    MySQL 交集 实现方法
    MBProgressHUD的使用
    Xcode4 使用 Organizer 分析 Crash logs(转)
    SimpleXML 使用详细例子
    PHP的XML Parser(转)
    iPhone,iPhone4,iPad程序启动画面的总结 (转)
    Pop3得到的Email 信件格式介绍
    yii总结
    隐藏Tabbar的一些方法
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896750.html
Copyright © 2011-2022 走看看