Pythonfilter()函数:实现数据筛选和过滤
Python的filter()函数是Python语言中的高阶函数之一,它可以通过给定的函数对序列中的元素进行筛选和过滤。在Python中,序列指的是列表、元组和字符串等。该函数的语法如下:
filter(function, iterable)
其中,function是一个布尔型函数,接收一个参数并返回True或False,iterable是一个序列对象。
filter()函数将序列对象中的每个元素传递给function函数,如果函数返回True,则将该元素添加到新的序列中,最终返回筛选后的序列对象。例如,下面的代码使用filter()函数从列表中筛选出所有的偶数:
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] list2 = list(filter(lambda x: x % 2 == 0, list1)) print(list2) # [2, 4, 6, 8]
在上面的代码中,输入的序列是列表list1,function函数使用lambda表达式定义,它将列表中的每个元素除以2进行求余运算,如果余数为0,则返回True,否则返回False。最终,函数返回的序列list2只包含输入序列中的偶数。
除了使用lambda表达式,我们也可以定义一个返回True或False的常规函数,并将其作为function函数传递给filter()函数。例如,以下是一个返回True或False的函数,它用于判断一个数是否是质数:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
使用上面的函数和filter()函数来筛选出指定区间内的质数:
list1 = range(1, 11) list2 = list(filter(is_prime, list1)) print(list2) # [2, 3, 5, 7]
在上面的代码中,输入的序列是range(1, 11),list2是筛选后的质数序列。
除了序列对象外,filter()函数还可以接收元组、集合和字典等可迭代对象。例如,以下代码使用filter()函数从字典中筛选出所有年龄大于18岁的人:
dict1 = {'Tom': 20, 'Jerry': 15, 'Mike': 35, 'Andy': 10}
dict2 = dict(filter(lambda x: x[1] > 18, dict1.items()))
print(dict2) # {'Tom': 20, 'Mike': 35}
在上面的代码中,输入的可迭代对象是字典dict1,function函数使用lambda表达式定义,它选择字典中所有的键值对中,值大于18的元素。最终,函数返回的字典dict2只包含输入字典中年龄大于18岁的人。
总之,filter()函数是Python语言中功能强大的数据筛选和过滤函数,它可以用简单的方式从序列对象中筛选和过滤出需求的元素。
