您的位置:

Python filter()函数用法

Python是一种高级编程语言,具有简洁、易读、易于学习和理解的特点。而其中一种非常有用的函数就是filter()函数。在Python中,filter()函数用于从Python列表中过滤具有特定标准的元素,并在新列表中返回它们。本文将详细介绍Python中filter()函数的用法及其示例。

一、简介

filter()函数是Python内置的高阶函数之一,它用于过滤序列,如列表、元组、字典和字符串,筛选出满足条件的元素,并返回一个新的序列。filter()函数接受两个参数,一个是函数,另一个是序列,filter()函数遍历序列中所有元素,对每个元素调用给定的函数,如果函数返回True,则将该元素加入到新的序列中,最后返回这个新的序列。

filter()函数的语法如下所示:

    filter(function, iterable)

参数解释:

  • function: 过滤函数,该函数接受一个参数并返回布尔值。如果返回True,则表示元素满足条件,被保留下来。
  • iterable: 可迭代对象,对其进行过滤。

另外,需要注意的是,Python3中filter()函数返回一个filter对象,而不是列表。

二、示例

1. 过滤列表中的奇数

下面的示例演示如何过滤列表中的奇数。我们定义了一个函数 is_odd(),该函数检查某个数是否为奇数,并将其作为过滤函数传递给filter()函数。然后,我们使用filter()函数过滤出了一个新的序列,该序列只包含输入列表中的奇数。

    def is_odd(n):
        return n % 2 != 0
      
    numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    odd_numbers = list(filter(is_odd,numbers))
    print(odd_numbers)

输出结果为:[1, 3, 5, 7, 9]。

2. 过滤字符串中的元音字母

下面的示例演示如何从字符串中过滤出非元音字母。我们定义了一个函数 is_consonant(),该函数检查某个字母是否为辅音字母,并将其作为过滤函数传递给filter()函数。

    def is_consonant(letter):
        vowels = "aeiouAEIOU"
        return letter not in vowels
      
    input_str = "Python filter function"
    consonants = list(filter(is_consonant,input_str))
    print("".join(consonants))

输出结果为:'Pythn fltr fnctn'。

3. 过滤字典中符合条件的元素

下面的示例演示如何从字典中过滤出符合条件的元素。我们定义了一个函数 is_adult(),该函数检查某个键值对是否表示成年人(年龄大于等于18岁),并将其作为过滤函数传递给filter()函数。然后我们使用filter()函数过滤出了一个新的键值对,该键值对只包含输入字典中表示成年人的键值对。

    def is_adult(key_value_pair):
        key, value = key_value_pair
        return value >= 18
      
    some_dict = {"Peter": 20, "Mary": 15, "John": 18, "Jane": 19}
    adults = dict(filter(is_adult,some_dict.items()))
    print(adults)

输出结果为:{'Peter': 20, 'Jane': 19, 'John': 18}。

三、总结

filter()函数是Python内置函数之一,用于过滤序列中的元素,并返回新的序列。filter()函数接受两个参数,一个是过滤函数,另一个是需要过滤的序列。filter()函数返回一个filter对象,可以使用list()函数将其转换为列表。在使用filter()函数时,需要定义过滤函数,该函数接受一个参数,并返回布尔值。如果返回True,则表示元素满足条件,被保留下来。

本文通过几个示例详细介绍了Python中filter()函数的用法,希望能够帮助读者更好地理解和使用该函数。