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

Python 中 filter() 函数的用法及示例

发布时间:2023-07-04 10:32:05

在Python中,filter()函数是内置函数之一,用于过滤序列中的元素,根据指定的函数条件来筛选元素并返回一个新的可迭代对象。该函数的语法为:

filter(function, iterable)

其中,function是用来筛选元素的函数,iterable是可迭代对象。filter()函数会对iterable中的每个元素调用function函数,并返回一个包含所有满足条件的元素的新的可迭代对象。

下面是使用filter()函数的示例:

1.过滤出偶数

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

def is_even(x):
    return x % 2 == 0

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

上述示例中,is_even()函数用于判断一个数是否为偶数。filter()函数会对numbers列表中的每个元素调用is_even()函数,返回满足条件的元素组成的新的可迭代对象,最后使用list()函数将可迭代对象转换为列表并输出。

2.过滤出长度为3的字符串

strings = ["apple", "banana", "grape", "pear", "kiwi"]

def is_length_3(x):
    return len(x) == 3

length_3_strings = filter(is_length_3, strings)
print(list(length_3_strings))  # 输出 ['pear', 'kiwi']

上述示例中,is_length_3()函数用于判断一个字符串的长度是否为3。filter()函数会对strings列表中的每个元素调用is_length_3()函数,返回满足条件的元素组成的新的可迭代对象,最后使用list()函数将可迭代对象转换为列表并输出。

3.过滤出大于10的元素

numbers = [5, 10, 15, 20, 25, 30]

greater_than_10 = filter(lambda x: x > 10, numbers)
print(list(greater_than_10))  # 输出 [15, 20, 25, 30]

上述示例中,使用了lambda匿名函数来判断一个数是否大于10。filter()函数会对numbers列表中的每个元素调用lambda函数,返回满足条件的元素组成的新的可迭代对象,最后使用list()函数将可迭代对象转换为列表并输出。在这个例子中,使用lambda函数更加简洁,避免定义额外的函数。

总结:filter()函数可用于过滤序列中的元素,根据指定的函数条件来筛选元素并返回一个新的可迭代对象。通过传入一个函数和一个可迭代对象,filter()函数会对可迭代对象中的每个元素调用函数,并返回满足条件的元素组成的新的可迭代对象。可以通过定义一个自定义函数或者使用lambda匿名函数作为参数来指定筛选条件。