Python filter() 函数的简单应用
Python filter() 函数是一个非常有用的函数,可以用于过滤序列,例如列表或元组,只保留符合特定条件的元素。这个函数非常简单易用,只需要指定一个函数和一个序列作为参数即可,函数将会返回一个过滤后的序列。本文将介绍 Python filter() 函数的用法及其简单应用。
语法:
filter(function, iterable)
参数:
function:函数,用于过滤序列的元素。
iterable:序列,需要过滤的序列,例如列表,元组等。
返回值:
filter() 函数返回一个迭代器(iterator)对象,包含通过指定函数过滤后的序列中的元素。
示例:
下面是一个简单的例子,使用 filter() 函数过滤一个列表中的奇数元素:
def is_odd(n):
return n % 2 == 1
lst = [2, 3, 5, 6, 8, 9]
result = filter(is_odd, lst)
print(list(result)) # [3, 5, 9]
上面的代码中,is_odd() 函数用于判断一个数是否为奇数,filter() 函数通过 is_odd() 函数过滤了列表 lst 中的奇数元素,最终返回一个新的序列 [3, 5, 9]。
下面我们来看一些更加实际的应用场景。
1. 过滤列表中的空字符串
可以使用 filter() 函数过滤出列表中的非空字符串。例如,
lst = ['', 'hello', '', 'world', ' ', 'python'] result = filter(lambda x: x.strip(), lst) print(list(result)) # ['hello', 'world', 'python']
上面的代码中,lambda 函数用于删除字符串两边的空格,在 filter() 函数中将空字符串过滤掉,最终返回一个新的序列 ['hello', 'world', 'python']。
2. 过滤列表中的偶数
除了过滤奇数外,我们还可以使用 filter() 函数过滤列表中的偶数。例如,
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] result = filter(lambda x: x % 2 == 0, lst) print(list(result)) # [2, 4, 6, 8]
上面的代码中,lambda 函数用于判断一个数是否为偶数,最终返回一个新的序列 [2, 4, 6, 8]。
3. 过滤字典中的某些元素
filter() 函数不仅可以用于过滤列表或元组,还可以用于过滤字典的键或值。例如,
d = {'apple': 3, 'banana': 2, 'orange': 1}
result = dict(filter(lambda x: x[1] >= 2, d.items()))
print(result) # {'apple': 3, 'banana': 2}
上面的代码中,lambda 函数用于判断一个键对应的值是否大于等于 2,在 filter() 函数中将小于 2 的键值对过滤掉,最终返回一个新的字典 {'apple': 3, 'banana': 2}。
4. 过滤文件中的某些行
filter() 函数还可以用于过滤文件中的某些行。例如,
with open('data.txt') as f:
result = filter(lambda x: x.startswith('#'), f.readlines())
print(''.join(result))
上面的代码中,with 语句用于自动关闭打开的文件,lambda 函数用于判断行是否以 # 开头,在 filter() 函数中将非 # 开头的行过滤掉,最终返回一个新的字符串,包含所有以 # 开头的行。
总结
Python filter() 函数是一个非常方便的过滤器,可以用于过滤各种类型的序列,包括列表、元组、字典等。它的语法简单,并且提供了非常灵活的用法,可以用于各种实际的场景,帮助我们轻松地实现各种复杂的过滤操作。
