前言
列表解析表达式不仅可以简化代码,其也是一种所谓的 “向量化” 操作。在一定程度上,增加了代码的可读性和速度。因此,值得学习!!!
定义
列表解析表达式以中括号 [] 和 if (else) / for 表达式组成,结果产生一个 列表对象 。如果实际操作就很容易理解了。如下:
lst = [i for i in range(10)]
lst
Out[10]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
两种常见的格式
第一种,由 for 表达式和 if 表达式组成。如下示例:
lst = [i for i in range(10) if i % 2 == 0]; lst
Out[11]: [0, 2, 4, 6, 8]
lst = [i for i in range(10) if i % 2 == 0 if i % 4 == 0]; lst
Out[12]: [0, 4, 8]
从上面的示例中,我们可以看出, if 表达式可以一直添加下去。因此,我们可以使用多种 条件 来判断和筛选数据。
第二种,由 for 表达式和 if…else… 表达式组成。如下示例:
lst = [ i if i %4 == 0 else 0 for i in range(10) if i % 2 == 0]; lst
Out[13]: [0, 0, 4, 0, 8]
lst = [ i if i %4 == 0 else 0 for i in range(10) if i % 2 == 0 if i % 4 == 0]; lst
Out[3]: [0, 4, 8]
此时,大家应该可以注意到了,使用 if…else 表达式时,是放在 for 表达式的前面,起到 赋值 的作用。