在Python中使用filter()函数的实例
发布时间:2023-06-03 20:37:25
Python中的filter()函数是一个非常有用的内置函数,用于从序列中过滤出符合条件的元素。可以用它来筛选出一个序列中的偶数、大于10的元素等等,非常灵活。filter()函数的基本语法如下:
filter(function, iterable)
其中,function是过滤函数,iterable是要过滤的序列,可以是列表、元组、字典等等。过滤函数function返回值是True或False,它会对iterable的每个元素进行判断,如果返回值为True,则把该元素留下来,最终返回一个由留下的元素组成的序列。
下面用一些实例来演示filter()函数的使用。
## 实例1:筛选出列表中的偶数
def is_even(n):
return n % 2 == 0
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = list(filter(is_even, nums))
print(evens) # 输出[2, 4, 6, 8, 10]
这里定义了一个过滤函数is_even,返回值是该数是否为偶数。在nums列表上使用filter()函数,把偶数提取出来,最后用list()函数把结果转换为列表。
## 实例2:筛选出字符串中的元音字母
def is_vowel(c):
return c in 'aeiouAEIOU'
s = 'hello world'
vowels = ''.join(filter(is_vowel, s))
print(vowels) # 输出'eoo'
这里定义了一个过滤函数is_vowel,返回值是该字符是否为元音字母。在字符串s上使用filter()函数,把元音字母提取出来,最后用''.join()函数把结果转换为字符串。
## 实例3:筛选出字典中的某个关键字的值
scientists = [
{'name': 'Newton', 'field': 'physics'},
{'name': 'Darwin', 'field': 'biology'},
{'name': 'Turing', 'field': 'computer science'}
]
def find_by_field(field):
def check_field(scientist):
return scientist['field'] == field
return check_field
physicists = list(filter(find_by_field('physics'), scientists))
print(physicists) # [{'name': 'Newton', 'field': 'physics'}]
这里定义了一个finder函数,返回一个过滤函数check_field,返回值是该科学家是否从事field领域的研究。然后在scientists字典列表上使用filter()函数,把从事physics领域的科学家提取出来。
以上实例展示了filter()函数的常用操作,filter()函数是一个非常强大的函数,可以用来完成各种过滤操作,非常灵活,值得去学习和使用。
