欢迎访问宙启技术站
智能推送

Python中的filter()函数是什么?用例分析。

发布时间:2023-07-26 21:07:13

filter()函数是Python内置的一个高阶函数,用于过滤序列中的元素,返回一个符合条件的新序列。它接受两个参数, 个参数是函数对象,第二个参数是一个迭代器或可迭代对象(例如列表、元组、字典等)。filter()函数会依次将第二个参数中的元素传入 个参数函数中进行判断,返回值为True的元素被保留在新序列中,返回值为False的元素被过滤掉。

下面是一个filter()函数的用例分析:

1. 过滤偶数的例子:

def is_even(n):
    # 判断是否为偶数
    return n % 2 == 0

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_numbers = list(filter(is_even, numbers))
print(even_numbers)  # 输出:[2, 4, 6, 8, 10]

上面的例子中,首先定义了一个函数is_even(),用于判断一个数是否为偶数。然后定义了一个列表numbers,包含了一些数字。使用filter()函数对numbers列表进行过滤,保留其中的偶数元素,最终得到一个新的列表even_numbers。

2. 过滤空字符串的例子:

def not_empty(s):
    # 判断是否为空字符串
    return s and s.strip()

strings = ['', 'hello', 'world', '', 'python']

non_empty_strings = list(filter(not_empty, strings))
print(non_empty_strings)  # 输出:['hello', 'world', 'python']

上述例子中,定义了一个函数not_empty(),用于判断一个字符串是否为空字符串。然后定义了一个包含了一些字符串的列表strings。使用filter()函数对strings列表进行过滤,保留其中的非空字符串元素,最终得到一个新的列表non_empty_strings。

3. 过滤字典中符合条件的键值对的例子:

def is_vowel(char):
    # 判断是否为元音字母
    return char.lower() in ['a', 'e', 'i', 'o', 'u']

vowels = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}

vowel_items = dict(filter(lambda item: is_vowel(item[0]), vowels.items()))
print(vowel_items)  # 输出:{'a': 1, 'e': 5}

上面的例子中,定义了一个函数is_vowel(),用于判断一个字符是否为元音字母。然后定义了一个字典vowels,包含了一些键值对。使用filter()函数对vowels.items()进行过滤,保留其中的键为元音字母的键值对,最终得到一个新的字典vowel_items。

总结:filter()函数可以方便地对序列进行过滤,只保留符合条件的元素。可以通过自定义函数的方式,实现各种过滤逻辑,也可以使用lambda表达式来简化代码。filter()函数的返回值是一个可迭代对象,如果需要输出为列表或字典等其他类型,可以通过list()、dict()等函数进行转换。