2024年3月20日发(作者:)

filter函数介绍

在Python中,filter()函数是一个典型的内置函数,它是一个谓词函数,通常在一个

序列中过滤出符合指定条件的元素,并将它们返回到一个新生成的序列中。

filter(function, iterable)

其中,function代表过滤函数,而iterable代表数据序列。

在这个函数中,function是指的一个bool函数,主要是用来判断每一个元素是否符

合条件。如果为True,则会过滤出此元素,否则舍弃。

在Python3中,filter()返回的是一个filter对象,这个对象是一个生成器,我们可以

通过list()将其转换为一个列表。

使用Filter函数的示例:

# 定义一个函数,判断一个数是否为偶数

def is_even(n):

return n % 2 == 0

# 定义数据列表

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 输出结果

print(list(result))

输出结果:

[2, 4, 6, 8, 10]

在上面的示例中,我们定义了一个is_even()函数,用来判断一个数是否是偶数。然

后定义了一个数据列表data,包含了数字1到10。我们利用filter()函数,将is_even()

函数应用于data列表中的每个元素,并返回符合条件的元素,将得到一个列表[2, 4, 6, 8,

10]。

除此之外,我们也可以使用lambda表达式来实现相同的过滤效果,如下所示:

# 使用lambda表达式过滤奇数

result = filter(lambda x: x % 2 != 0, data)

在这个示例中,我们使用lambda表达式来定义一个过滤条件,将不是偶数的元素保

留下来。

filter()函数不仅可以用于过滤数据,还可以用于过滤空字符串,如下所示:

# 定义字符串列表

words = ['hello', '', 'world', 'test', '', 'python']

# 使用filter()函数过滤空字符串

result = filter(None, words)

在这个示例中,我们使用filter()函数过滤了一个包含空字符串的列表,使用了None

作为过滤函数,这时,filter()函数将会自动过滤掉所有空字符串。

总结:

使用filter()函数可以对一个序列中的数据进行过滤,并返回符合条件的元素列表。它

可以用谓词函数进行过滤,也可以用lambda表达式进行过滤。filter()函数的返回值是一

个生成器,我们可以通过list()将其转换为一个列表,从而进行操作。filter()函数的应用范

围非常广泛,我们可以灵活地运用它来满足不同需求。