Python中的过滤函数filter的使用方法
Python中的filter()函数是一种高阶函数,它接受一个函数与一个可迭代对象作为参数,得到的是一个迭代器,其中包含原迭代器中所有使得函数返回值为True的元素。其基本语法为:
filter(function, iterable)
其中,function是一个函数,接受一个参数并返回True或False。iterable则是一个可迭代对象,如列表、字符串、元组等。
下面介绍filter函数的使用方法:
# 1. 过滤列表中的偶数
filter 函数可以接受一个函数和一个列表作为参数,将该列表中符合条件的元素提取出来。例如,我们可以使用filter函数来过滤列表中的偶数:
def is_even(n):
return n % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(is_even, numbers)
print(list(result)) # [2, 4, 6, 8, 10]
上述代码中,我们定义了一个函数is_even用来判断一个数是否是偶数。然后我们将这个函数和列表numbers作为参数传递给filter函数,得到一个提取出来的迭代器。最后我们使用list函数将迭代器转化成列表并打印出来结果。
# 2. 过滤出字符串中的元音字母
我们可以使用filter函数来提取出字符串中的元音字母,例如:
def is_vowel(s):
vowels = "aeiou"
return s.lower() in vowels
string = "hello world"
result = filter(is_vowel, string)
print(list(result)) # ['e', 'o', 'o']
上述代码中,我们定义了一个函数is_vowel用来判断一个字符是否是元音字母,然后我们将这个函数和字符串string作为参数传递给filter函数,得到一个提取出来的迭代器。最后我们使用list函数将迭代器转化成列表并打印出来结果。
# 3. 过滤出字典中的健值对
filter函数也可以用来过滤出字典中符合条件的键值对。例如,我们可以使用filter函数来过滤出字典中value为偶数的键值对:
def is_value_even(item):
key, value = item
return value % 2 == 0
d = {'a':1, 'b':2, 'c':3, 'd':4}
result = filter(is_value_even, d.items())
print(dict(result)) # {'b': 2, 'd': 4}
上述代码中,我们定义了一个函数is_value_even用来判断字典中value是否为偶数,然后我们将这个函数和字典d的items()作为参数传递给filter函数,得到一个提取出来的迭代器。最后我们使用dict函数将迭代器转化成字典并打印出来结果。
总结:
filter函数可以提取出符合条件的元素,拥有很广泛的应用场景。需要注意的是,filter函数返回结果是迭代器,如果需要转化成列表或字典,需要使用list、dict函数进行转化。
