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的值。