List Comprehensions(列表生成式)

列表生成式,是Python内置的非常简单却强大的可以用来创建list的生成式。

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

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

但如果要生成[1*1,2*2,3*3,........,10*10]:

>>> L = []
>>> for x in range(1,11):
L.append(x*x) >>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

>>> [x*x for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

写列表生成式时,把要生成的元素x*x放到前面,后面跟for循环,就可以把list创建出来。

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

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

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

>>> [m+n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

三层和三层以上的循环就很少用到了。

运用列表生成式,可以写出非常简洁的代码。例如,列出当前目录下所有文件和目录名,可以通过一行代码实现:

>>> import os
>>> [d for d in os.listdir('.')]
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'Scripts', 'tcl', 'Tools']

for循环其实可以同时使用两个甚至多个变量,比如dict的items()可以同时迭代key和value:

>>> d = {'x':'A','y':'B','z':'C'}
>>> for k,v in d.items():
print (k,'=',v) ('y', '=', 'B')
('x', '=', 'A')
('z', '=', 'C')

因此,列表生成式也可以使用两个变量来生成list:

>>> [k+'='+v for k,v in d.items()]
['y=B', 'x=A', 'z=C']

最后把一个list中的所有字符串变成小写:

>>> L = ['Hello','World','IBM','Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']

总结

运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁。

Python高级教程-列表生成式的更多相关文章

  1. Python高级特性——列表生成式(list Comprehensions)

    List Comprehensions 即列表生成式,是Python内置的强大的用来生成列表list的生成式. 简单菜: >>> l = list(range(2,13)) > ...

  2. Day9 python高级特性-- 列表生成式 List Comprehensions

    Python内置的非常简单却强大的可以用来创建list的生成式.    私理解为,就是for循环出来的结果搞成个list~~~~    要生成顺序增量list可以使用list(range(x,y))来 ...

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

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

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

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

  5. python 迭代 及列表生成式

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

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

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

  7. Python实用笔记 (9)高级特性——列表生成式

    列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, ...

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

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

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

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

随机推荐

  1. linux 查看java进程

    ps -ef|grep java 1. jps 或 ps –ef|grepjava (获取PID)

  2. log4j容器初始化探究

    Log4j容器初始化探究 Log4j第一步就是初始化Logger容器Repository,这一章我们来探究Logger容器,从别从独立应用以及servlet容器下启动初始化两方面探究. 1 独立应用 ...

  3. cadence制作封装要素

    cadence中封装制作完成后必须包含的元素: 1. 引脚. 2. 零件外形,轮廓线.package geometry->silkscreen_top, assembly_top. 3. 参考编 ...

  4. Control character in cookie value or attribute

    在cookie中添加中文导致静态页面打不开, (1)先清除缓存 (2)使用escape()函数对中文进行编码,获取的时候在对中文进行解码unescape(). cookie.Set("sto ...

  5. C++ STL标准模板库(stack)

    //stack的使用 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<stack> using name ...

  6. [转]移动互联网应用技术架构简介-Restful服务

    Restful是基于网络的软件系统架构风格.其优先考虑分布性和扩展性,而不是安全.错误处理.对象映射. 所以Restful架构特别适用的场合为用户快速增长的互联网和移动互联网领域,看起来很容易理解,以 ...

  7. (转)memcache、redis缓存

    memcache原理.内存模型: http://www.csdn.net/article/2016-03-16/2826609 redis原理: http://baike.baidu.com/link ...

  8. lstrcpyn

    看代码时遇到的一些不会用的函数,记录下来. 1. lstrcpyn LPTSTR lstrcpyn( __out LPTSTR lpString1, __in LPCTSTR lpString2, _ ...

  9. DevExpress 控件使用技巧

    DevExpress是非常主流的.NET控件,眼下全世界和中国都用非常多用户使用,只是因为是英文版,初次接触的同学可能会认为困难.这里就总结DevExpress常见的10个使用技巧. 1.TextEd ...

  10. 【Raspberry pi】set up an ftp server

    http://www.debian-administration.org/articles/228 As a means of distributing large collections of fi ...