zoukankan      html  css  js  c++  java
  • Python列表解析

    列表解析

      根据已有列表,高效创建新列表的方式。

      列表解析是Python迭代机制的一种应用,它常用于实现创建新的列表,因此用在[]中。

    语法:

      [expression for iter_val in iterable]

      [expression for iter_val in iterable if cond_expr]

    实例展示:

     1 要求:列出1~10所有数字的平方
     2 ####################################################
     3 1、普通方法:
     4 >>> L = []
     5 >>> for i in range(1,11):
     6 ...     L.append(i**2)
     7 ... 
     8 >>> print L
     9 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    10 ####################################################
    11 2、列表解析
    12 >>>L = [ i**2 for i in range(1,11)]
    13 >>>print L
    14 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
     1 要求:列出1~10中大于等于4的数字的平方
     2 ####################################################
     3 1、普通方法:
     4 >>> L = []
     5 >>> for i in range(1,11):
     6 ...     if i >= 4:
     7 ...         L.append(i**2)
     8 ... 
     9 >>> print L
    10 [16, 25, 36, 49, 64, 81, 100]
    11 ####################################################
    12 2、列表解析
    13 >>>L = [ i**2 for i in range(1,11) if i >= 4 ]
    14 >>>print L
    15 [16, 25, 36, 49, 64, 81, 100]
     1 要求:列出1~10所有数字的平方除以2的值
     2 ####################################################
     3 1、普通方法
     4 >>> L = []
     5 >>> for i in range(1,11):
     6 ...     L.append(i**2/2)
     7 ... 
     8 >>> print L
     9 [0, 2, 4, 8, 12, 18, 24, 32, 40, 50]
    10 ####################################################
    11 2、列表解析
    12 >>> L = [i**2/2 for i in range(1,11) ]
    13 >>> print L
    14 [0, 2, 4, 8, 12, 18, 24, 32, 40, 50]
     1 要求:列出"/var/log"中所有已'.log'结尾的文件
     2 ##################################################
     3 1、普通方法
     4 >>>import os
     5 >>>file = []
     6 >>> for file in os.listdir('/var/log'):
     7 ...     if file.endswith('.log'):
     8 ...         file.append(file)
     9 ... 
    10 >>> print file
    11 ['anaconda.ifcfg.log', 'Xorg.0.log', 'anaconda.storage.log', 'Xorg.9.log', 'yum.log', 'anaconda.log', 'dracut.log', 'pm-powersave.log', 'anaconda.yum.log', 'wpa_supplicant.log', 'boot.log', 'spice-vdagent.log', 'anaconda.program.log']
    12 ##################################################
    13 2.列表解析
    14 >>> import os
    15 >>> file = [ file for file in os.listdir('/var/log') if file.endswith('.log') ]
    16 >>> print file
    17 ['anaconda.ifcfg.log', 'Xorg.0.log', 'anaconda.storage.log', 'Xorg.9.log', 'yum.log', 'anaconda.log', 'dracut.log', 'pm-powersave.log', 'anaconda.yum.log', 'wpa_supplicant.log', 'boot.log', 'spice-vdagent.log', 'anaconda.program.log']
     1 要求:实现两个列表中的元素逐一配对。
     2 1、普通方法:
     3 >>> L1 = ['x','y','z']
     4 >>> L2 = [1,2,3]      
     5 >>> L3 = []
     6 >>> for a in L1:
     7 ...     for b in L2:
     8 ...         L3.append((a,b))
     9 ... 
    10 >>> print L3
    11 [('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]
    12 ####################################################
    13 2、列表解析:
    14 >>> L1 = ['x','y','z']
    15 >>> L2 = [1,2,3]
    16 L3 = [ (a,b) for a in L1 for b in L2 ]
    17 >>> print L3
    18 [('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

    说明:

      以上实例,使用列表解析比使用普通方法的速度几乎可以快1倍。因此推荐使用列表解析。

    http://www.cnblogs.com/spiritman/
  • 相关阅读:
    CentOS7下搭建zabbix监控(五)——Web端配置自动发现并注册
    CentOS7下搭建zabbix监控(四)——Zabbix报警设置
    CentOS7下搭建zabbix监控(三)——Zabbix监控服务配置
    CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置
    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置
    CentOS7下配置Tomcat以APR模式+Tomcat Native运行
    Webbrowser控件判断网页加载完毕的简单方法 (转)
    反射的奥妙 (转)
    .net 浏览器请求过程(图)
    .net反射详解(转)
  • 原文地址:https://www.cnblogs.com/spiritman/p/5159709.html
Copyright © 2011-2022 走看看