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

Python中的filter ()函数是干什么的?

发布时间:2023-05-20 03:17:10

Python中的filter()函数是用于筛选列表、元组或字典中的元素,返回一个新序列,包含符合条件的所有元素。

当我们需要筛选指定的数据集的一部分时,使用filter函数比较适用。通常我们需要对数据集中的每个元素应用一个特定的过滤条件。如果元素满足条件,则将其添加到新序列或新集合中。否则,就将其忽略。

filter()函数可以接受两个参数,一个是函数对象,另一个是一个序列。在函数对象中,定义一个自定义的函数,在函数中,针对序列中的每个元素进行测试,只有通过测试的元素才会被添加到生成的新序列中。

filter()函数示例:

首先我们需要定义一个自定义函数,如下所示。

def positive_num(num):
    if num > 0:
        return True
    else:
        return False

然后我们创建一个列表,包含一些数字。这些数字中,有些是正数,有些是负数,我们想筛选出其中的正数。

num_list = [1, -2, 3, -4, 5, -6, 7, -8, 9]

result = filter(positive_num, num_list)

print("正数列表为:")

for num in result:
    print(num)

输出结果如下:

正数列表为:
1
3
5
7
9

如果你不想定义函数,也可以使用lambda表达式来实现上述操作。

num_list = [1, -2, 3, -4, 5, -6, 7, -8, 9]

result = filter(lambda x: x > 0, num_list)

print("正数列表为:")

for num in result:
    print(num)

输出结果如下:

正数列表为:
1
3
5
7
9

在这个例子中,lambda表达式 x > 0取代了 positive_num函数。实现的功能是一样的,只不过方式不同。

除了可以传入序列类型的数据进行过滤以外,filter()函数也可以过滤字典元素。

dict1 = {"a": 1, "b": 2, "c": -3, "d": -4, "e": 5}

result = filter(lambda x: dict1[x] > 0, dict1)

print("正数字典为:")

for key in result:
    print(key, ":", dict1[key])

输出结果如下:

正数字典为:
a : 1
b : 2
e : 5

在这个例子中,我们使用了一个lambda表达式,在表达式中检查dict1字典中每个项的值。

总之,filter()函数是一种很有用的过滤数据的工具。它提供了一种简单而有效的方法来处理大量数据,找出所需的元素,并生成一个新列表、元组或字典。