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