zoukankan      html  css  js  c++  java
  • 零基础学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-目录


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

  • 相关阅读:
    centos8 将SSSD配置为使用LDAP并要求TLS身份验证
    Centos8 搭建 kafka2.8 .net5 简单使用kafka
    .net core 3.1 ActionFilter 拦截器 偶然 OnActionExecuting 中HttpContext.Session.Id 为空字符串 的问题
    Springboot根据不同环境加载对应的配置
    VMware Workstation12 安装 Centos8.3
    .net core json配置文件小结
    springboot mybatisplus createtime和updatetime自动填充
    .net core autofac依赖注入简洁版
    .Net Core 使用 redis 存储 session
    .Net Core 接入 RocketMQ
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896716.html
Copyright © 2011-2022 走看看