欢迎访问宙启技术站
智能推送

使用Python中的filter()函数进行列表元素过滤

发布时间:2023-06-17 10:58:33

在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()函数,我们可以大大提升对列表、元组、集合等可迭代数据对象的处理效率。