• python列表解析【expression for iter_val in iterable if cond_expr】


    列表解析

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

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

    语法:

    [expression for iter_val in iterable]

    [expression for iter_val in iterable if cond_expr]

    实例展示:

    1

    要求:列出1~10所有数字的平方
    ####################################################
    1、普通方法:
    >>> L = []
    >>> for i in range(1,11):
    ...     L.append(i**2)
    ...
    >>> print L
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    ####################################################
    2、列表解析
    >>>L = [ i**2 for i in range(1,11)]
    >>>print L
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    

    2

    要求:列出1~10中大于等于4的数字的平方
    ####################################################
    1、普通方法:
    >>> L = []
    >>> for i in range(1,11):
    ...     if i >= 4:
    ...         L.append(i**2)
    ...
    >>> print L
    [16, 25, 36, 49, 64, 81, 100]
    ####################################################
    2、列表解析
    >>>L = [ i**2 for i in range(1,11) if i >= 4 ]
    >>>print L
    [16, 25, 36, 49, 64, 81, 100]
    

    3

    要求:列出1~10所有数字的平方除以2的值
    ####################################################
    1、普通方法
    >>> L = []
    >>> for i in range(1,11):
    ...     L.append(i**2/2)
    ...
    >>> print L
    [0, 2, 4, 8, 12, 18, 24, 32, 40, 50]
    ####################################################
    2、列表解析
    >>> L = [i**2/2 for i in range(1,11) ]
    >>> print L
    [0, 2, 4, 8, 12, 18, 24, 32, 40, 50]
    

    4

    要求:列出"/var/log"中所有已'.log'结尾的文件
    ##################################################
    1、普通方法
    >>>import os
    >>>file = []
    >>> for file in os.listdir('/var/log'):
    ...     if file.endswith('.log'):
    ...         file.append(file)
    ...
    >>> print file
    ['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']
    ##################################################
    2.列表解析
    >>> import os
    >>> file = [ file for file in os.listdir('/var/log') if file.endswith('.log') ]
    >>> print file
    ['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']
    

    5

    要求:实现两个列表中的元素逐一配对。
    1、普通方法:
    >>> L1 = ['x','y','z']
    >>> L2 = [1,2,3]
    >>> L3 = []
    >>> for a in L1:
    ...     for b in L2:
    ...         L3.append((a,b))
    ...
    >>> print L3
    [('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]
    ####################################################
    2、列表解析:
    >>> L1 = ['x','y','z']
    >>> L2 = [1,2,3]
    L3 = [ (a,b) for a in L1 for b in L2 ]
    >>> print L3
    [('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]
    

    6

    1 使用列表解析生成 9*9 乘法表
    2 
    3 print('
    '.join([''.join(['%s*%s=%-2s '%(y,x,x*y)for y in range(1,x+1)])for x in range(1,10)]))
    
  • 相关阅读:
    项目管理系列(其他):国际工程承包项目风险识别与分析
    公司注册之简化版
    公司注册之百度百科
    有效投标不足三家不应是重新招标的必要条件
    CPU频率
    集成电路
    晶体管
    Oracle问题之ORA-01609、ORA-00362
    Oracle问题之ORA-12560TNS:协议适配器错误
    Oracle问题之字符集问题,登陆sqlplus出现问号
  • 原文地址:https://www.cnblogs.com/ycycn/p/13788346.html
Copyright © 2020-2023  润新知