• 零基础学python-19.4 为什么要在意列表解析与序列映射函数map


    这一章节我们来讨论一下为什么要在意列表解析与序列映射函数map,也就是为什么要有前面的几个章节?

    答案:就是对于迭代序列,每一个序列的对象只进行一种操作,它能够提供精简的代码


    我们下面举两个例子:

    1.去掉每一行的换行符

    >>> [item for item in open('output_file.txt')]
    ['aaaaa
    ', 'bbbbb
    ', 'accccc
    ', 'ddddd
    ', 'afffff']
    >>> 

    上面的例子是不是非常的熟悉呢?其实我们在前面的列表解析初探的时候已经出现过,现在再一次引用,我们现在需要的操作是每一行去掉换行符

    下面我们提供几种实现方法:

    * 使用列表解析:

    >>> [item.rstrip() for item in open('output_file.txt')]
    ['aaaaa', 'bbbbb', 'accccc', 'ddddd', 'afffff']

    >>> [line.rstrip() for line in open('output_file.txt').readlines()]
    ['aaaaa', 'bbbbb', 'accccc', 'ddddd', 'afffff']
    >>> 

    * 使用map:

    >>> list(map(lambda line:line.rstrip() , open('output_file.txt')))
    ['aaaaa', 'bbbbb', 'accccc', 'ddddd', 'afffff']
    >>> 
    >>> def test(line):
    	return line.rstrip()
    
    >>> list(map(test,open('output_file.txt')))
    ['aaaaa', 'bbbbb', 'accccc', 'ddddd', 'afffff']
    >>> 

    * 使用for循环

    >>> def test():
    	res=[]
    	for line in open('output_file.txt'):
    		res.append(line.rstrip())
    	return res
    
    >>> test()
    ['aaaaa', 'bbbbb', 'accccc', 'ddddd', 'afffff']
    >>> 

    上面三种方法,我们从两个方面评判:

    * 可读性:3>1>2

    * 性能:1>2>3

    这种时候我们就需要从实际当中出发,调研我们的应用里面究竟需要哪种实现。

    当然,笔者认为,在当今的应用当中,除了像互联网公司的那种高并发应用才追求性能,对于一般的应用,可读性比性能来的更加重要,毕竟对于一般应用,薄弱环节在于人,而不在于性能。


    2.读取sql数据的属性

    由于python的标准sql返回对象是这种形式:列表嵌套元组,列表就是表,元组就是行,对象就是列

    返回的对象:

    >>> obj=[('ray','16','man'),('jack','20','man'),('rose','22','woman')]
    >>> 

    我们下面还是使用三种方法读取里面的名字属性

    * 使用列表解析:

    >>> obj=[('ray','16','man'),('jack','20','man'),('rose','22','woman')]
    >>> [name for (name,age,sex) in obj]
    ['ray', 'jack', 'rose']
    >>> 

    * 使用map:

    >>> obj=[('ray','16','man'),('jack','20','man'),('rose','22','woman')]
    >>> list(map(lambda row:row[0],obj))
    ['ray', 'jack', 'rose']
    >>> 

    * 使用for循环

    >>> obj=[('ray','16','man'),('jack','20','man'),('rose','22','woman')]
    >>> def test(obj):
    	res=[]
    	for line in obj:res.append(line[0])
    	return res
    
    >>> test(obj)
    ['ray', 'jack', 'rose']
    >>> 


    总结:这一章节我们举例说明了为什么要在意列表解析与序列映射函数map,还有一些注意的地方。


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

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

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


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

  • 相关阅读:
    操作系统_3:linux教程列表
    MongoEngine 查询语法
    Spark_1:教程索引
    软件需求十步走之阅读笔记03
    软件需求十步走之阅读笔记02
    软件需求十步走之阅读笔记01
    暑期学习四
    暑期学习三
    暑期学习二
    暑期学习一
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896716.html
Copyright © 2020-2023  润新知