我们先定义一个简单的函数,它会算变量的平方并加 5:
>>> def stupid_func(x): >>> return x**2 + 5如果我们希望将该函数应用到列表中的奇数项,那么不采用递推式构造列表的情况下,我们一般会写成以下形式:
>>> my_list = [1, 2, 3, 4, 5] >>> new_list = [] >>> for x in my_list: >>> if x % 2 != 0: >>> new_list.append(stupid_func(x)) >>> print(new_list) [6, 14, 30]但是现在我们有了递推式构造列表,那么上面代码可以等价修改为:
>>> my_list = [1, 2, 3, 4, 5] >>> print([stupid_func(x) for x in my_list if x % 2 != 0]) [6, 14, 30]递推式构造列表的一般语法可以表示为[ expression for item in list ],如果你希望加上一些布尔型条件语句,那么上面的语法可以修改为 [ expression for item in list if conditional ],它的结构其实和下面是等价的。
>>> for item in list: >>> if conditional: >>> expression上面的递推式构造列表可以进一步简化,即不需要定义一个新函数。
>>> print([x ** 2 + 5 for x in my_list if x % 2 != 0]) [6, 14, 30]