欢迎访问宙启技术站
智能推送

Python中的filter()函数 - 通过指定的函数过滤可迭代对象中的元素。

发布时间:2023-06-06 09:07:30

Python中的filter()函数是一种非常有用的函数,可以帮助我们过滤可迭代对象中的元素。它可以接受一个函数和一个可迭代对象作为参数,并返回一个包含满足指定条件的元素的迭代器。

filter()函数的基本语法如下:

filter(function, iterable)

其中,function是用来过滤可迭代对象中元素的函数。它应该接受一个参数,并返回一个布尔值。如果返回True,表示该元素应该被保留,否则应该被过滤掉。iterable是要过滤的可迭代对象。

示例:

def even_number(n):

    return n % 2 == 0

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

filtered = filter(even_number, numbers)

for n in filtered:

    print(n)

输出结果为:

2

4

6

8

10

在这个例子中,我们定义了一个名为even_number的函数。该函数接受一个参数n,并判断该数是否为偶数。如果是偶数,函数返回True,反之则返回False。我们用该函数来过滤一个包含1到10这些数字的列表。最终,我们将过滤出的偶数输出。

和上面的例子类似,我们也可以使用lambda表达式来完成上述过滤操作:

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

filtered = filter(lambda n: n % 2 == 0, numbers)

for n in filtered:

    print(n)

输出结果和上面的例子一致。

除此之外,我们还可以使用filter()函数来过滤字符串列表:

words = ['apple', 'banana', 'cat', 'dog', 'ear', 'fish']

filtered = filter(lambda s: len(s) > 3, words)

for w in filtered:

    print(w)

输出结果为:

apple

banana

在这个例子中,我们使用lambda表达式来判断字符串的长度是否大于3。如果大于3,就将该字符串保留,否则过滤掉。最终,我们只保留了‘apple’和‘banana’这两个字符串。

最后,我们需要指出的是,和map()函数一样,filter()函数返回的是一个迭代器。如果我们要访问该迭代器中的所有元素,需要使用for循环或转换成列表等容器类型。当然,如果我们真的只需要使用一次该迭代器中的元素,也可以直接使用next()函数一次性取出。