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

如何使用 Python 内置的 filter() 函数?

发布时间:2023-05-20 14:14:30

Python 内置函数中的 filter() 函数可以用于过滤列表、元组、集合等可迭代对象中的元素。该函数可以接受两个参数, 个参数是一个函数,第二个参数是一个可迭代的对象。filter() 函数将 个参数指定的函数依次作用于可迭代对象中的每个元素,返回一个新的迭代器,其返回值是所有符合条件的元素组成的序列。

filter() 函数的语法如下:

filter(function, iterable)

其中,function 是一个函数,可以是自定义函数或 lambda 函数;iterable 是一个可迭代的对象。

下面是一个实例,它使用 lambda 函数对一个列表中的元素进行过滤,返回所有偶数元素组成的新列表:

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

filtered_list = list(filter(lambda x: x % 2 == 0, my_list))

print(filtered_list)

输出结果为:

[2, 4, 6, 8, 10]

在上面的代码中,我们首先定义了一个列表 my_list,然后使用 lambda 函数作为参数传递给 filter() 函数。该 lambda 函数检查列表中的元素是否为偶数,如果是,则将其加入到新的列表中。最后,我们使用 list() 结构将筛选过的结果转换为列表并打印输出。

除了 lambda 函数,我们也可以使用自定义函数来作为 filter() 函数的 个参数。下面是一个自定义函数的例子:

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True


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

filtered_list = list(filter(is_prime, my_list))

print(filtered_list)

输出结果为:

[2, 3, 5, 7]

在上面的代码中,我们定义了一个自定义函数 is_prime(),它用于检查一个数字是否是质数。我们使用这个自定义函数作为参数传递给 filter() 函数,来过滤出所有的质数并输出结果。

此外,我们可以使用 filter() 函数来过滤元组和集合等可迭代的对象。下面是一个对元组进行过滤的例子:

my_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

filtered_tuple = tuple(filter(lambda x: x % 2 == 0, my_tuple))

print(filtered_tuple)

输出结果为:

(2, 4, 6, 8, 10)

在上面的代码中,我们定义了一个元组 my_tuple,并使用 filter() 函数来筛选出其中的偶数元素并输出结果。

总之,filter() 函数是 Python 内置函数中非常强大的一个,我们可以使用它来过滤任意可迭代的对象,并快速得到符合条件的结果。需要提醒的是,在使用 filter() 函数时,我们需要对返回的结果使用 list()、tuple() 等数据容器进行处理才能得到期望的结果。