📅  最后修改于: 2023-12-03 14:46:37.701000             🧑  作者: Mango
在Python中,filter是一种内置函数,它可用于过滤可迭代对象中的元素。Python中的迭代器是指能遍历所有元素的对象,例如列表、元组、字典、字符串等,甚至是用户定义的对象。
filter()函数接收两个参数,第一个参数是函数,第二个参数是可迭代对象。其语法格式为:
filter(function, iterable)
其中,
function:用于筛选每个元素的函数,它接收一个参数,即可迭代对象中的每个元素,返回值为True或False。
iterable:可迭代对象,可以是序列、列表、元组、字典等。
函数function返回True的元素会被保留,而返回False的元素会被过滤掉。
我们来看几个例子,以加深理解。
# 过滤出列表中的偶数
lst = [1, 2, 3, 4, 5, 6, 7, 8]
result = filter(lambda x: x%2==0, lst)
print(list(result)) # [2, 4, 6, 8]
这个例子使用了lambda表达式定义了一个匿名函数用于判断元素是否为偶数,然后调用filter()函数,将要过滤的列表和函数作为参数传入,并使用list()函数将返回的filter对象转换为列表输出。
# 过滤出字典中所有值超过50的键值对
d = {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50, 'f': 60}
result = dict(filter(lambda x:x[1]>50, d.items()))
print(result) # {'f': 60}
上面的例子使用了items()函数将字典d转换为可迭代对象,然后使用lambda表达式定义了筛选条件,再将筛选出来的键值对放入另一个字典中输出。
在Python中,filter函数可以通过用户自定义函数或lambda表达式作为参数,对可迭代对象中的元素进行筛选过滤。filter()函数返回的是一个filter对象,需要通过list()函数或其他方式转换为列表或其他内置类型。