Python filterfalse()和filter()都是内置函数,它们可以对可迭代对象中的元素进行过滤和筛选,返回一个新的可迭代对象。
filterfalse()
filterfalse(function, iterable)
函数的作用就是过滤掉满足条件的元素。
function
参数是一个函数,用于设定过滤条件。iterable
参数是一个可迭代对象,如列表或字典等。
filterfalse()
的返回值是一个迭代器,包含了所有满足条件的元素的迭代器。
使用示例:
from itertools import filterfalse
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
odd_numbers = list(filterfalse(lambda x: x % 2 == 0, numbers))
print(odd_numbers)
输出结果为:
[1, 3, 5, 7, 9]
在这个例子中,我们将一个列表中的所有偶数过滤掉,只返回奇数。
另一个例子:
from itertools import filterfalse
fruits = ["apple", "banana", "orange", "grapefruit"]
selected_fruits = list(filterfalse(lambda x: len(x) > 6, fruits))
print(selected_fruits)
输出结果为:
['apple', 'banana', 'orange']
在这个例子中,我们将一个字符串列表中长度大于6的字符串过滤掉,只返回长度小于等于6的字符串。
filter()
filter(function, iterable)
函数的作用是将一个可迭代对象中满足条件的元素挑选出来,返回满足条件的部分所组成的新迭代器。
function
参数是一个函数,用于设定过滤条件。iterable
参数是一个可迭代对象,如列表或字典等。
filter()
的返回值是一个新的迭代器,包含了所有满足条件的元素的迭代器。
使用示例:
from itertools import filterfalse
scores = [78, 88, 90, 67, 92, 83, 79, 64]
passed_scores = list(filter(lambda s: s >= 80, scores))
print(passed_scores)
输出结果为:
[88, 90, 92, 83]
在这个例子中,我们将一个分数列表中所有及格的分数(80分以上)挑选出来,只返回及格的分数。
另一个例子:
from itertools import filterfalse
addresses = ["221B Baker Street",
"0700PREFACE",
"42 Memory Lane"]
valid_addresses = list(filter(lambda x: x.isalnum(), addresses))
print(valid_addresses)
输出结果为:
['0700PREFACE']
在这个例子中,我们将一个地址列表中只包含了字母和数字的地址挑选出来,只返回符合条件的地址。