使用Python中的filter()函数进行列表元素过滤
在Python中,很多常用的操作都可以使用内置函数来实现。其中,filter()函数就是一种可以过滤列表元素的高效工具。
filter()函数的功能是从一个序列(列表、元组、集合等)中过滤出符合条件的元素,形成一个新的序列。其语法如下:
filter(function, iterable)
其中,function是一个返回值为True或False的函数,用于过滤iterable中的元素。而iterable则是一个可迭代对象,如列表、元组、集合等。
下面,我们来看一些示例,了解filter()函数的使用方式。
# 示例一:过滤奇偶数
我们要从一个列表中,筛选出所有的奇数或所有的偶数,可以这样实现:
# 过滤奇数 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] res = list(filter(lambda x: x % 2 != 0, l)) print(res) # [1, 3, 5, 7, 9] # 过滤偶数 res = list(filter(lambda x: x % 2 == 0, l)) print(res) # [2, 4, 6, 8, 10]
这里使用了lambda表达式来定义判断式,函数lambda x: x % 2 != 0表示将x对2取余后不等于0的数(即奇数)保留下来,而函数lambda x: x % 2 == 0则表示将x对2取余后等于0的数(即偶数)保留下来。最后,使用list()函数将结果转换为列表输出。
# 示例二:过滤空字符串
我们要从一个字符串列表中,筛选出所有非空字符串,可以这样实现:
l = ['hello', '', 'world', '', 'python', ''] res = list(filter(lambda x: x != '', l)) print(res) # ['hello', 'world', 'python']
这里的lambda表达式用于判断字符串是否为空字符串,不为空的保留下来。最后,使用list()函数将过滤结果转换为列表输出。
# 示例三:过滤None和空值
我们要从一个包含None和空值的列表中,筛选出所有非None和非空的值,可以这样实现:
l = ['hello', None, '', 'world', '', None, 'python'] res = list(filter(lambda x: x is not None and x != '', l)) print(res) # ['hello', 'world', 'python']
这里的lambda表达式可以合并判断:is not None用于判断是否为None,x != ''用于判断是否为非空字符串。最后,使用list()函数将过滤结果转换为列表输出。
总结
filter()函数是一个非常常用的高级操作函数,可以快速过滤序列中的元素。通过学会使用filter()函数,我们可以大大提升对列表、元组、集合等可迭代数据对象的处理效率。
