1.2.2 列表解析式

列表解析式是Python提供的一种从列表中便捷地抽取数据的方式,类似于数学上集合的表示方式。实际上,它完全可以由for循环语句代替实现,只不过会略显烦琐。来看一个例子,代码如下。

    In [1]: list1 = [1, 2, 3, 4, 5]

    In [2]: l_even = [i for i in list1 if i%2 == 0]

    In [3]: l_even
    Out[3]: [2, 4]

对于l_even,完全可以通过for循环语句获取,代码如下。

    In [4]: l_even = []

    In [5]: for i in list1:
      ...:    if i%2 == 0:
      ...:       l_even.append(i)
      ...:

    In [6]: l_even
    Out[6]: [2, 4]

后者明显更加麻烦一点。对于列表解析式,初学者要学会通过这种拆解的方法理解它的使用意图。自己在工作学习中也不用刻意去追求复杂的列表解析式,熟悉之后便能运用自如了。一定注意不要为了追求所谓的简捷而牺牲代码的可读性。