Python filterfalse()和filter()过滤方法

  • Post category:Python

Python中的Filter函数

在Python中,Filter是一个内置函数。它用于过滤序列,如列表、元组、字典等。它接受一个函数和一个序列作为输入,并通过将该序列中的每个元素传递到该函数中来过滤该序列。如果函数返回True,则该函数将保留该元素,否则从结果中删除该元素。

filter()的使用方法如下:

filter(function, sequence)

其中,function是一个接受一个参数并返回True或False的函数,sequence是要过滤的序列。函数可以是内置函数,也可以是自定义函数。

filter()方法的示例

接下来,我们将通过两个示例来演示filter()方法的工作原理。在第一个示例中,我们将过滤一个列表中的所有奇数。在第二个示例中,我们将过滤一个字典中的所有值小于10的项。以下是这两个示例:

示例1:过滤列表中的奇数

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 定义一个函数,用于判断一个数字是否为偶数
def is_even(num):
    if num % 2 == 0:
        return True
    else:
        return False

# 使用filter函数过滤出所有偶数,并保存在一个新的列表中
new_list = list(filter(is_even, my_list))

# 输出新列表
print(new_list) # 输出 [2, 4, 6, 8]

在本示例中,我们定义了一个名为is_even()的函数,该函数接受一个数字作为参数,并返回True(如果该数字为偶数)或False(如果该数字为奇数)。我们使用filter()方法对my_list列表进行过滤,并将is_even函数作为参数传递给该方法。最后,我们将结果存储在一个新列表new_list中,并输出new_list的值。

示例2:过滤字典中的值小于10的项目

my_dict = {'a': 5, 'b': 10, 'c': 15, 'd': 20}

# 定义一个函数,用于判断一个数字是否小于10
def is_below_10(num):
    if num < 10:
        return True
    else:
        return False

# 使用filter函数过滤出所有值小于10的项目,并保存在一个新字典中
new_dict = dict(filter(lambda elem: is_below_10(elem[1]), my_dict.items()))

# 输出新字典
print(new_dict) # 输出 {'a': 5, 'b': 10}

在本示例中,我们定义了一个名为is_below_10()的函数,该函数接受一个数字作为参数,并返回True(如果该数字小于10)或False(如果该数字大于等于10)。我们将lambda表达式作为参数传递给filter()方法,该lambda表达式在字典的每个项上操作,并将is_below_10()函数作为该lambda表达式的参数调用。最后,我们将结果存储在一个新字典new_dict中,并输出new_dict的值。

Python中的filterfalse()函数

filterfalse()方法是filter()方法的补充。它也是一个内置函数,用于过滤序列,但该函数过滤出的是返回False的元素。与filter()函数相反,如果函数返回False,则保留该元素,否则将其从结果中删除。

filterfalse()的使用方法如下:

filterfalse(function, sequence)

这里的function是一个接受一个参数并返回True或False的函数,sequence是要过滤的序列。

filterfalse()方法的示例

以下是一个示例,我们将使用filterfalse()方法来过滤掉列表中的所有偶数。

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 定义一个函数,用于判断一个数字是否为偶数
def is_even(num):
    if num % 2 == 0:
        return True
    else:
        return False

# 使用filterfalse函数过滤出所有奇数,并保存在一个新的列表中
new_list = list(filterfalse(is_even, my_list))

# 输出新列表
print(new_list) # 输出 [1, 3, 5, 7, 9]

在本示例中,我们使用了filterfalse()函数来过滤出my_list中的所有奇数,并将它们存储在一个新列表new_list中。我们通过将is_even函数作为参数传递给filterfalse()函数来实现这一点。最后,我们输出new_list的值。