下面是Python中filter函数的使用攻略。
什么是filter函数?
filter() 函数是内置的Python函数之一,它用于过滤序列,过滤掉不满足条件的元素,返回一个迭代器。
filter()函数的基本语法如下:
filter(function, iterable)
这里 function 表示过滤函数,是对 iterable 每个元素进行判断的函数,接受一个参数并返回布尔值,True 表示该元素通过过滤,False 表示未通过过滤。iterable 表示可遍历对象,例如列表、元组、字典等。
使用方法
过滤列表元素
例1:过滤偶数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(lambda x: x % 2 == 0, numbers)
print(list(result))
输出结果为:
[2, 4, 6, 8, 10]
这里定义了一个判断函数lambda x: x % 2 == 0
,对列表 numbers 内的元素进行判断,如果是偶数就返回True,表示该元素需要保留;否则返回False,表示该元素需要过滤。通过filter()函数过滤后,保留下来的是偶数,最后使用list()函数将 filter 对象转换为列表形式,输出结果。
例2:过滤字符串列表
words = ['computer', 'mouse', 'monitor', 'keyboard', 'printer', 'scanner']
result = filter(lambda x: len(x) > 6, words)
print(list(result))
输出结果为:
['computer', 'keyboard', 'printer', 'scanner']
这里定义了一个判断函数lambda x: len(x) > 6
,对字符串列表 words 内的元素进行判断,如果字符串长度大于6就返回True,表示该元素需要保留;否则返回False,表示该元素需要过滤。通过filter()函数过滤后,保留下来的是字符串长度大于6的元素,最后使用list()函数将 filter 对象转换为列表形式,输出结果。
过滤字典元素
例3:过滤字典的键值对
scores = {'Mike': 88, 'John': 92, 'Lily': 84, 'Lucy': 90}
result = filter(lambda x: x[1] > 85, scores.items())
print(list(result))
输出结果为:
[('Mike', 88), ('John', 92), ('Lucy', 90)]
这里定义了一个判断函数 lambda x: x[1] > 85
,对字典 scores 内的键值对进行判断,如果值大于85就返回True,表示该键值对需要保留;否则返回False,表示该键值对需要过滤。注意,这里使用了字典的items()方法,将键值对转换为元组形式进行遍历。通过filter()函数过滤后,保留下来的是值大于85的键值对,最后使用list()函数将 filter 对象转换为列表形式,输出结果。
过滤元组元素
例4:过滤元组中的负数
data = [(1, 3, -5), (4, -2, 7), (6, 8, 9), (-1, 2, 10), (5, 8, 0)]
result = filter(lambda x: any(i < 0 for i in x), data)
print(list(result))
输出结果为:
[(1, 3, -5), (4, -2, 7), (-1, 2, 10)]
这里定义了一个判断函数 lambda x: any(i < 0 for i in x)
,对元组 data 中的元素进行判断,如果元组内存在负数就返回 True,表示该元素需要保留;否则返回 False,表示该元素需要过滤。注意,这里使用了any()函数,判断元组内是否存在负数。通过filter()函数过滤后,保留下来的是含有负数的元组,最后使用list()函数将 filter 对象转换为列表形式,输出结果。
总结
以上就是 filter 函数的基本用法和示例,使用 filter 函数能够让我们更方便地处理序列数据和字典数据等,从而提高数据处理效率。