![零基础入门Python数据分析与机器学习](https://wfqqreader-1252317822.image.myqcloud.com/cover/147/44510147/b_44510147.jpg)
上QQ阅读APP看书,第一时间看更新
2.3.3 filter()函数
Python内建的filter()函数用于筛选序列,与map()函数类似,filter()函数也接收一个函数和一个序列。与map()函数不同的是,filter()函数把传入的函数依次作用于每一个元素,然后根据返回值是True还是False来决定是保留还是丢弃该元素。
例如,调用filter()函数筛选出1~100中平方根是整数的数,示例代码如下:
![](https://epubservercos.yuewen.com/F4E5C2/23721471401889206/epubprivate/OEBPS/Images/Figure-P46_8352.jpg?sign=1739323206-QaGL3tCBX9ByDjzymGReIJ72AXOBNOKs-0-da46444b0cd0ea6bec66a04e445a4b53)
运行上述代码,输出为“[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]”,其中math.sqrt()是求平方根的函数。
此外,还可以用filter()函数来处理缺失值等。例如,将一个序列中的空字符串都删除掉,示例代码如下:
![](https://epubservercos.yuewen.com/F4E5C2/23721471401889206/epubprivate/OEBPS/Images/Figure-P46_8354.jpg?sign=1739323206-2TcSEVwCO9ptweakBpVuFU0OiSO6KLrp-0-a0438e9f1aefe197e600ca2ae695ed2b)
运行上述代码,输出为“['华东', '华北', '华南']”。可见使用filter()高阶函数的关键在于如何正确地实现一个筛选函数。
注意
filter()函数返回的是一个迭代器,也是一个惰性序列,计算结果都需要调用list()函数来获得所有结果并返回一个列表。