Python 中 filter() 函数的用法及示例
在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匿名函数作为参数来指定筛选条件。
