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-目录

     


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

  • 相关阅读:
    在C#代码中应用Log4Net(二)典型的使用方式
    在C#代码中应用Log4Net(一)简单使用Log4Net
    Windows Azure Active Directory (2) Windows Azure AD基础
    Windows Azure Virtual Network (6) 设置Azure Virtual Machine固定公网IP (Virtual IP Address, VIP) (1)
    Windows Azure Active Directory (1) 前言
    Azure China (6) SAP 应用在华登陆 Windows Azure 公有云
    Microsoft Azure News(3) Azure新的基本实例上线 (Basic Virtual Machine)
    Microsoft Azure News(2) 在Microsoft Azure上运行SAP应用程序
    Microsoft Azure News(1) 新的数据中心Japan East, Japan West and Brazil South
    Windows Azure HandBook (2) Azure China提供的服务
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896750.html
Copyright © 2011-2022 走看看