Python进阶之一就是学会写列表推导式。列表推导式用较为优雅的方式生成列表,从而避免冗余代码,不过对于新手来讲,代码的可读性不高。我们先看下面一段示例。
>>>a = [1, 2, 3, 4] >>>b = [item * 2 for item in a] >>>b [2, 4, 6, 8] |
上述代码将一个列表中每一个元素加倍生成一个新的列表,可以写成如下更容易理解的形式:
>>>a = [1, 2, 3, 4] >>>b = [] >>>for item in a: ... b.append(item * 2) ... >>>b [2, 4, 6, 8] |
结果是一样的,但是列表推导式所需的代码更少。如果我们只想保留偶数并加倍,可以这么写:
>>>a [1, 2, 3, 4] >>>b = [item * 2 for item in a if item % 2 == 0] >>>b [4, 8] |
总结一下,Python列表推导式的模式为[expression for item in sequence if conditions]。列表推导式放在[]中;首先是一个表达式,定义了对每一个元素要做什么;接下来是一个for循环,从一个序列中依次拿出一个元素;最后是if条件,可以没有if条件。[]改为()得到的是一个生成器(generator),改为{}得到一个字典或者集合。
用列表推导式可以写出更有创意的代码,当然如果代码很难被读懂,应该尽量实现更好可读性的代码。可读性高的代码才更加具有生命力。