Pythonfilter()函数的用法及示例
Python filter()函数是一种能够过滤序列中元素的方法,使用该方法能够从一个序列中过滤出符合条件的元素集合,也可以利用Python filter()函数实现并行计算等功能。本文将详细介绍Python filter()函数的用法及示例。
一、Python filter()函数的用法
Python filter()函数的语法格式如下:
filter(function, iterable)
其中,function表示过滤函数,它是一个返回值为布尔类型的函数,用于检查序列中的每个元素是否符合筛选条件,iterable表示待过滤的序列,它可以是列表、元组、字符串、集合或字典等各种类型的可迭代对象。
Python filter()函数的返回值是一个可迭代的filter对象,filter对象中包含了符合筛选条件的元素集合。
二、Python filter()函数的示例
下面我们通过一些例子来说明Python filter()函数的使用方法。
1. 使用Python filter()函数过滤出列表中符合条件的元素
例如有下面一个整数列表,我们想要将其中的偶数筛选出来:
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def filter_func(x):
return x % 2 == 0
result = filter(filter_func, num_list)
print(list(result))
该程序的输出结果为:
[2, 4, 6, 8, 10]
在该示例中,我们定义了一个过滤函数filter_func(x),该函数的作用是检查x是否为偶数。然后,我们利用Python filter()函数将num_list中的每个元素传入该函数进行检查,并将符合条件的元素放入一个新的集合中。
在使用Python filter()函数时,通常需要使用list()函数将filter对象转换为列表。
2. 使用Python filter()函数过滤出字典中符合条件的元素
Python filter()函数同样适用于字典对象的筛选。例如有下面一个包含若干个字典元素的列表,我们希望筛选出其中age字段大于20的字典元素:
people_list = [{"name": "Tom", "age": 18}, {"name": "Jerry", "age": 25},
{"name": "Tony", "age": 21}, {"name": "Lucy", "age": 17}]
def filter_func(x):
return x["age"] > 20
result = filter(filter_func, people_list)
print(list(result))
该程序的输出结果为:
[{'name': 'Jerry', 'age': 25}, {'name': 'Tony', 'age': 21}]
在该示例中,我们定义了一个过滤函数filter_func(x),该函数的作用是检查x字典元素中的age字段是否大于20。我们利用Python filter()函数将people_list中的每个字典元素传入该函数进行检查,并将符合条件的字典元素放入一个新的集合中。
3. 使用Python filter()函数与lambda表达式一起使用
Python中使用lambda表达式可以简化程序的代码量,Python filter()函数同样支持与lambda表达式一起使用。例如,我们可以使用lambda表达式过滤出列表中的奇数:
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = filter(lambda x: x % 2 == 1, num_list) print(list(result))
该程序的输出结果为:
[1, 3, 5, 7, 9]
在该示例中,我们没有定义一个独立的过滤函数,而是使用lambda表达式作为过滤函数。其中,lambda表达式的作用和filter_func()函数的作用相同,用于检查x是否为奇数。
4. 利用Python filter()函数实现并行计算
Python filter()函数不仅可以用于序列的过滤,还可以用于实现并行计算。例如,我们可以使用Python filter()函数实现并行计算一个列表中所有元素的乘积:
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def product_func(x, y):
return x * y
result = filter(lambda x: x is not None, map(lambda x: num_list[x] if x % 2 == 0 else None, range(len(num_list))))
print(list(result))
该程序的输出结果为:
[1, 6, 35, 384]
在该示例中,我们使用Python map()函数和lambda表达式实现了一个函数,该函数的作用是将列表中第偶数个元素求出并返回,其他元素返回None。然后,我们利用Python filter()函数将None过滤掉,并将求得的偶数位置元素集合进行相乘。注意,在使用Python map()函数时,需要对结果进行判断,将不需要的元素设置为None,否则会导致最终结果出现值为None的元素。
