零基础入门Python数据分析与机器学习
上QQ阅读APP看书,第一时间看更新

2.3.3 filter()函数

Python内建的filter()函数用于筛选序列,与map()函数类似,filter()函数也接收一个函数和一个序列。与map()函数不同的是,filter()函数把传入的函数依次作用于每一个元素,然后根据返回值是True还是False来决定是保留还是丢弃该元素。

例如,调用filter()函数筛选出1~100中平方根是整数的数,示例代码如下:

运行上述代码,输出为“[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]”,其中math.sqrt()是求平方根的函数。

此外,还可以用filter()函数来处理缺失值等。例如,将一个序列中的空字符串都删除掉,示例代码如下:

运行上述代码,输出为“['华东', '华北', '华南']”。可见使用filter()高阶函数的关键在于如何正确地实现一个筛选函数。

注意

filter()函数返回的是一个迭代器,也是一个惰性序列,计算结果都需要调用list()函数来获得所有结果并返回一个列表。