Python 列表推导式

简介

列表推导式即 List Comprehensions ,简单却强大。

列表推导式的格式

[x for item in sequence <if (conditions)>]  # 这里的x是对 item进行的操作
[表达式 for 变量 in 列表 if 条件] # 列表推导式会比for循环快很多

例子

In [1]: [x**2 for x in range(5) if x < 2]
Out[1]: [0, 1]

# 省略条件语句
In [2]: [x**2 for x in range(5)]
Out[2]: [0, 1, 4, 9, 16]

# 自定义表达式和条件语句
In [3]: [(x, x**2) for x in (1, 2, 3, 4, 5, 6) if x % 3]
Out[3]: [(1, 1), (2, 4), (4, 16), (5, 25)]

# 多个 for 和多个 if
In [4]: [(x, y) for x in range(5) if not x % 3 for y in range(5) if not y % 2]
Out[4]: [(0, 0), (0, 2), (0, 4), (3, 0), (3, 2), (3, 4)]

# 表达式可以是函数
In [7]: [sum([x, y]) for x in range(5) for y in range(2)]
Out[7]: [0, 1, 1, 2, 2, 3, 3, 4, 4, 5]

In [8]: [sum([x, y]) for (x, y) in zip([1, 2, 3, 4], [2, 3, 4, 5])]
Out[8]: [3, 5, 7, 9]

参考资料