zoukankan      html  css  js  c++  java
  • Python学习九:列表生成式

    列表生成式,是Python内置的一种极其强大的生成list的表达式。

    如果要生成一个list [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] 可以用 range(1 , 10):

     

    [python] view plain copy
     
     print?
    1. >>> range(1, 9)  
    2. [1, 2, 3, 4, 5, 6, 7, 8]  


    可是,如果要生成[1*1 , 2*2 , 3*3 , ... , 10*10] 怎么做呢?可以使用循环:

     

     

    [python] view plain copy
     
     print?
    1. >>> L= []  
    2. >>> for x in range(1 , 10):  
    3. ...     L.append(x*x)  
    4. ...   
    5. >>> L  
    6. [1, 4, 9, 16, 25, 36, 49, 64, 81]  


    而列表生成式,可以用一句代替以上的繁琐循环来完成上面的操作:

     

     

    [python] view plain copy
     
     print?
    1. >>> print [x*x for x in range(1 , 11)]  
    2. [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]  
    3. >>>   


    列表生成式的书写格式:[x*x for x in range(1 , 11)]

     

    第一:把要生成的元素 x*x 放到前面

    第二:后面跟上for循环

    这样就可以把list创建出来。

    for循环后面还可以加上if判断,这样可以筛选出偶数的平方:

     

    [python] view plain copy
     
     print?
    1. >>> [x*x for x in range(1 , 11) if x%2 == 0]  
    2. [4, 16, 36, 64, 100]  
    3. >>>   


    当然,可以使用两层循环,生成全排列:

     

     

    [python] view plain copy
     
     print?
    1. >>> print [m + n for m in 'ABCD' for n in 'XYZ']  
    2. ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ', 'DX', 'DY', 'DZ']  
    3. >>>   

    如何使用两个变量来生成list:

     

     

    [python] view plain copy
     
     print?
    1. d = {'Java':"99" , 'C':"99" , 'C++':"99" }  
    2. L = [k+'='+v for k , v in d.iteritems()]  
    3.   
    4. print L  


    最后来做一个练习:

     

    L = ['Java' , 'C' , 'Swift' , 'Python' , 123] , 现在有 list 中包含字符串,和整数,把list中得大写字符转为小写,推到出另外一个list":

    1、使用内建的isinstance函数可以判断一个变量是不是字符串

    2、s.lower() 可以将一个大写字母转为小写。

    3、增加if语句保证列表生成式正确执行。

    代码如下:

     

    [python] view plain copy
     
     print?
      1. L = ['Java' , 'C' , 'Swift' , 'Python' , 123]  
      2. print [s.lower() if isinstance(s , str) else s for s in L ]  
  • 相关阅读:
    Java集合分析
    数据结构之红黑树
    数据结构之二叉查找树
    数据源 连接oracle
    Android使用jxl快速生成Excel表
    Java 条形码 二维码 的生成与解析
    setPreferredSize和setSize的区别及用法
    JAVA学习Swing章节布局管理器简单学习 补充(第四种布局理解)
    swing外观框架
    Java 实现ftp 文件上传、下载和删除
  • 原文地址:https://www.cnblogs.com/conanwang/p/5968380.html
Copyright © 2011-2022 走看看