Filter函数:根据给定的函数筛选列表中的元素
Filter函数是Python中的一个内置函数,它可以根据给定的函数对列表中的元素进行筛选。换言之,这个函数可以根据指定的条件来筛选列表中符合条件的元素,然后返回一个新的列表。
filter()函数的基本语法如下:
filter(function, iterable)
其中,function是用来筛选的函数,iterable是需要筛选的列表。
function接收一个参数,表示一个元素,在函数内部需要根据给定的条件判断该元素是否符合条件。如果符合条件,则返回True,否则返回False。
例如,以下代码使用filter()函数筛选出列表中大于2的元素:
def is_greater_than_two(num):
if num > 2:
return True
else:
return False
lst = [1, 2, 3, 4, 5, 6]
new_lst = list(filter(is_greater_than_two, lst))
print(new_lst) # [3, 4, 5, 6]
以上代码中,is_greater_than_two()函数接收一个参数num,判断num是否大于2。如果是,则返回True,否则返回False。
然后,我们创建了一个列表lst,使用filter()函数和is_greater_than_two()函数对该列表进行筛选,找出大于2的元素,最终生成一个新的列表new_lst。
除了使用函数外,我们还可以使用lambda表达式来定义筛选条件。例如,以下代码使用lambda表达式筛选出列表中的偶数:
lst = [1, 2, 3, 4, 5, 6] new_lst = list(filter(lambda x: x % 2 == 0, lst)) print(new_lst) # [2, 4, 6]
在这个lambda表达式中,我们使用x代表列表中的元素,然后判断x是否为偶数。如果是,则返回True,否则返回False。
需要注意的是,filter()函数返回的是一个迭代器,如果需要生成一个列表,需要使用list()函数对迭代器进行转换。
此外,filter()函数还可以用于筛选字典中的元素。例如,以下代码筛选出字典中value大于2的键值对:
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
new_dic = dict(filter(lambda x: x[1] > 2, dic.items()))
print(new_dic) # {'c': 3, 'd': 4}
在这个lambda表达式中,x[1]代表字典中的value,判断value是否大于2。如果是,则返回True,否则返回False。最终,我们使用dict()函数将满足条件的键值对组成一个新的字典。
