5.11Python 列表推导式——轻量级循环

Posted by 撒得一地 on 2016年4月16日 in python教程

列表推导式(list comprehension)是利用其他列表创建新列表(类似于数学术语中的集合推导式)的一种方法。它的工作方式类似于for循环,必要时也可以加入if条件语句完善推到式。

列表推导式标准格式

[Expression for Variable in  list]
也就是:[ 表达式  for  变量 in 列表]

如果需要加入if条件语句则是:[表达式 for 变量 in 列表 if 条件] 

列表推导式操作实例:

>>> [x*x for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
#注:range(10)即列表[0,1,2,3,4,5,6,7,8,9]

加入if条件判断语句的列表推导式:

比如要取列表a中的偶数

>>> a = [1,2,3,4,5,6,7,8,9,10]
>>> [x for x in a if x % 2 == 0]
[2, 4, 6, 8, 10]

也可以增加更多for语句的部分:

>>> [(x,y) for x in range(3) for y in range(3)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

作为对比,下面的代码使用两个for语句创建相同的列表:

>>> result = []
>>> for x in range(3):
...     for y in range(3):
...             result.append((x,y))
...
>>> result
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

也可以和if字句联合使用,像以前一样:

>>> girls = ['alice','maria','xiaorui']
>>> boys = ['mike','bob','alon']
>>> [b+'+'+g for b in boys for g in girls if b[0] == g[0]]
['mike+maria', 'alon+alice']

这样就得到了那些名字首字母相同的男孩和女孩。

上一篇:

下一篇:

相关推荐

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.