当我们需要从一个序列中筛选出符合特定条件的数据时,可以使用Python自带的filter()
函数来实现。不过,Python 3.0 之后,为了方便用户对数据进行更加细致的筛选而新增了filterfalse()
函数,本文将对两个函数的使用方法进行详细说明。
filter() 函数
filter()
函数的作用是过滤掉不符合条件的元素,返回一个由所有符合条件的元素所构成的列表。其语法为:
filter(function, iterable)
- function: 用于判断的函数,接收一个参数,返回布尔值,如果是
True
则保留该元素,如果是False
则剔除该元素。 - iterable: 可迭代对象,可以是列表、元组、字典、集合等。
以下示例说明如何使用filter()
函数。假设我们要从下面的列表中筛选出所有的偶数:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我们可以编写如下的函数:
def is_even(n):
return n % 2 == 0
然后使用filter()
函数进行筛选:
res = list(filter(is_even, lst))
print(res) # [2, 4, 6, 8, 10]
filterfalse() 函数
与filter()
函数不同,filterfalse()
函数的作用是过滤掉符合条件的元素,返回一个由所有不符合条件的元素所构成的列表。其语法为:
filterfalse(function, iterable)
参数含义与filter()
函数相同。
以下示例说明如何使用filterfalse()
函数。假设我们要从下面的列表中筛选出所有的奇数:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我们可以编写如下的函数:
def is_odd(n):
return n % 2 != 0
然后使用filterfalse()
函数进行筛选:
from itertools import filterfalse
res = list(filterfalse(is_odd, lst))
print(res) # [2, 4, 6, 8, 10]
注意,由于filterfalse()
函数不是Python内置函数,因此需要先导入itertools
库才能使用。
总结:filter()
和filterfalse()
函数都是用于筛选符合/不符合特定条件的元素,方法非常类似,只是返回值相反。在实际开发中,根据具体需求选择不同的方法即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python filterfalse()和filter()过滤方法 - Python技术站