详解Python 运用过滤器

  • Post category:Python

以下是Python中使用过滤器的完整攻略。

什么是过滤器

在Python中,过滤器是一个可以将一个序列作为输入,根据特定的条件过滤掉一些元素并输出剩余元素的函数。

如何使用过滤器

Python中使用内置函数filter()可以创建一个过滤器对象。filter()方法需要两个参数:

  • 第一个参数为函数,该函数负责过滤工作。
  • 第二个参数为序列,即被过滤的序列。

使用过滤器的基础语法如下:

filter(function, sequence)

其中,function表示自定义的过滤函数,sequence表示需要过滤的序列,返回值是一个可迭代的对象。

过滤器的示例1

下面是一个简单的过滤器示例,对于列表中的每个元素,过滤函数将检查该元素是否大于等于5:

def filter_gt_5(x):
    return x >= 5

my_list = [1, 4, 5, 6, 10, 11]
filtered_list = filter(filter_gt_5, my_list)
print(list(filtered_list))  # [5, 6, 10, 11]

上述代码定义了一个自定义函数filter_gt_5(),对于每一个参数x,如果x大于等于5,函数返回True,否则返回False。接下来,我们使用filter_gt_5函数过滤my_list列表,返回的是所有大于等于5的数字。

过滤器的示例2

下面是一个更为复杂的过滤器示例,对于列表中的每个元素,过滤函数将检查该元素是否为奇数并且不是质数:

from math import sqrt

def filter_odd_not_prime(x):
    if x == 2:
        return False
    if x % 2 == 0:
        return True
    for i in range(3, int(sqrt(x)) + 1, 2):
        if x % i == 0:
            return True
    return False

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_list = filter(filter_odd_not_prime, my_list)
print(list(filtered_list))  # [1, 4, 6, 8, 9, 10]

上述代码定义了一个自定义函数filter_odd_not_prime(),对于每一个参数x:

  • 如果x是质数,函数返回False;

  • 如果x不是质数并且是奇数,函数返回True;

  • 如果x是偶数,函数返回True。

接下来,我们使用filter_odd_not_prime函数过滤my_list列表,返回的是所有不是质数并且是奇数,或者是偶数的数字。

总结

以上是Python中使用过滤器的完整攻略。通过自定义过滤函数,我们可以使用Python内置函数filter()过滤序列中不符合特定条件的元素,获得我们想要的结果。