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

  • Post category:Python

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']

在这个例子中,我们将一个地址列表中只包含了字母和数字的地址挑选出来,只返回符合条件的地址。