编辑这个页面须要登录或更高权限!

Python filter() 使用方法及示例

Python 内置函数

filter()方法从可迭代对象的元素构造一个迭代器,函数将为其返回true。

简单来说,filter()方法在一个函数的帮助下过滤给定的iterable,该函数测试iterable中的每个元素是否为真。

filter()方法的语法为:

filter(function, iterable)

filter()参数

filter()方法采用两个参数:

  • function-

  • 测试iterable的元素返回true还是false的函数,如果为None,则该函数默认为Identity函数-如果任何元素为false,则返回false

  • iterable-要过滤的iterable,可以是集合列表元组或任何迭代器的容器

filter()返回值

filter()方法返回一个迭代器,该迭代器为iterable中的每个元素传递函数检查。

filter()方法等效于:

# 当函数被定义时
(element for element in iterable if function(element))

# 当函数为空时
(element for element in iterable if element)

示例1:filter()如何处理可迭代列表?

# 按字母顺序排列的列表
alphabets = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# 过滤元音的函数
def filterVowels(alphabet):
    vowels = ['a', 'e', 'i', 'o', 'u']

    if(alphabet in vowels):
        return True
    else:
        return False

filteredVowels = filter(filterVowels, alphabets)

print('过滤后的元音是:')
for vowel in filteredVowels:
    print(vowel)

运行该程序时,输出为:

过滤后的元音是:
a
e
i
o

在这里,我们列出了一个字母列表,只需要过滤掉其中的元音即可。

我们可以使用for循环遍历alphabets列表中的每个元素,并将其存储在另一个列表中,但是在Python中,使用filter()方法可以使此过程变得更加轻松快捷。

我们有一个filterVowels检查字母是否为元音的函数。该函数与字母列表一起传递给filter()方法。

然后,filter()方法将每个字母传递给filterVowels()方法以检查其是否返回true。最后,它创建返回true(元音)的迭代器。

由于迭代器本身并不存储值,因此我们遍历它并逐一打印出元音。

示例2:没有filter函数的filter()方法如何工作?

# 随机列表
randomList = [1, 'a', 0, False, True, '0']

filteredList = filter(None, randomList)

print('过滤后的元素是:')
for element in filteredList:
    print(element)

运行该程序时,输出为:

过滤后的元素是:
1
a
True
0

在这里,randomList是一个由数字,字符串和布尔值组成的随机列表。

我们将randomList传递给filter()第一个参数(过滤器函数)为None的方法

将filter函数设置为None时,该函数默认为Identity函数,并且检查randomList中的每个元素是否为true。

当我们遍历最终的filterList时,我们得到的元素为true :(1, a, True 和 '0'作为字符串,所以'0'也为true)。

Python 内置函数

Python 基础教程
Python 流程控制
Python 函数
Python 数据类型
Python 文件操作
Python 对象和类
Python 日期和时间
Python 高级知识
Python 参考手册