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

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

  1. >>> range(1, 9)
  2. [1, 2, 3, 4, 5, 6, 7, 8]

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

  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]

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

  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判断,这样可以筛选出偶数的平方:

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

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

  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:

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

最后来做一个练习:

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

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

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

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

代码如下:

    1. L = ['Java' , 'C' , 'Swift' , 'Python' , 123]
    2. print [s.lower() if isinstance(s , str) else s for s in L ]

Python学习九:列表生成式的更多相关文章

  1. python学习笔记——列表生成式与生成器

    1.列表生成式(List Comprehensions) python中,列表生成式是用来创建列表的,相较于用循环实现更为简洁.举个例子,生成[1*1, 2*2, ... , 10*10],循环用三行 ...

  2. Python学习笔记 - 列表生成式listComprehensions

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- list(range(1, 11)) # 生成1乘1,2乘2...10乘10 L = [] for x i ...

  3. Python开发的入门教程(九)-列表生成式

    介绍 本文主要介绍Python中列表生成式的基本知识和使用 生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >&g ...

  4. Python学习02 列表 List

    Python学习02 列表 List Python列表 List Python中的列表(List)用逗号分隔,方括号包围(comma-separated values (items) between ...

  5. Python中的列表生成式和多层表达式

    Python中的列表生成式和多层表达式 如何生成[1x1, 2x2, 3x3, ..., 10x10]的列表? L=[]; ,): L.append(x*x) print L print (" ...

  6. python 迭代 及列表生成式

    什么是迭代 在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration). 在Python中,迭代是通过 for ...

  7. (python函数02)列表生成式

    (python函数02)列表生成式 示例代码  num = [i for i in range(1, 10)] print(num) ​ num = [i for i in range(1, 10) ...

  8. Python自学笔记-列表生成式(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 列表生成式 列 ...

  9. python基础:列表生成式和生成器

    列表生成式(List Comprehension) 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成 list ...

随机推荐

  1. hdu 5635 LCP Array(BC第一题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5635 LCP Array Time Limit: 4000/2000 MS (Java/Others) ...

  2. tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 8位硬件ECC

    这节我们实现nand的ecc,保存环境变量到nand flash 中.然后把我们之前的led灯烧写到nand flash 中.开机启动.在 tiny210.h 中定义宏 CONFIG_S5PV210_ ...

  3. vue-router实例

    最近刚刚用vue写了个公司项目,使用vue-cli构建的,算是中大型项目吧,然后这里想记录并且分享一下其中的知识点,希望对大家有帮助,后期会逐渐分享:话不多说,直接上代码!! main.js // T ...

  4. GPU版的tensorflow在windows上的安装时的错误解决方案

    1.用vs编译cuda的sample时会提示找不到"d3dx9.h"."d3dx10.h"."d3dx11.h"头文件的错误,如果没有安装这 ...

  5. time模块整理

    time模块中包含的方法 time() -- 返回当前系统的时间戳clock() -- 在UNIX系统上,它返回的是"进程时间",它是用秒表示的浮点数(时间戳). 而在WINDOW ...

  6. 为eclipse离线安装hibernate tools插件

    工具/原料   eclipse luna jboss hibernate tools 方法/步骤     下载hibernate tools插件   在eclipse根目录下创建myplugins和l ...

  7. Can't update: no tracked branch No tracked branch configured for branch dev.

    1.git pull 命令出现以下错误 $ git pull There is no tracking information for the current branch. Please speci ...

  8. python小整数与str数据池,编码关系

    1.小数据池:数字,字符串 数字的范围-5 ---256 字符串:1,不能有特殊字符 2,s*20 还是一个地址,s*21以后都是两个地址 2.编码关系:ascii A : 00000010 8位 一 ...

  9. sqlserver 存储过程 增加

    CREATE PROCEDURE [dbo].[InsertMessage]( @strTable varchar(), --表名 @strValues nvarchar(), --要插入的数据(用英 ...

  10. ftp 只需上传禁止下载

    一.首先在ftp / 主目录下给所有用户授予读写权限 二.给子目录授予写入权限,不允许读取