python filter函数的使用用法

  • Post category:Python

下面是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 函数能够让我们更方便地处理序列数据和字典数据等,从而提高数据处理效率。