Python中filter函数的用法及示例
发布时间:2023-06-15 00:22:46
Python中的filter函数是一种内置函数,用于过滤序列中满足条件的元素。该函数的基本语法如下:
filter(function, iterable)
其中,function是过滤条件的函数,可以自定义或使用Python内置函数;iterable是迭代器或可迭代对象,包含要过滤的元素。
filter()函数的工作过程为,对iterable中的每个元素应用function函数进行判断,如果返回True,则保留该元素,否则丢弃。最后返回一个新的可迭代对象,包含所有满足条件的元素。
下面是一些filter()函数的使用示例。
示例一:筛选出列表中的偶数
def is_even(n):
return n % 2 == 0
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_lst = list(filter(is_even, lst))
print(even_lst) # [2, 4, 6, 8]
这个例子中,我们自定义了函数is_even,用于判断是否为偶数。然后使用filter()函数把列表lst中所有偶数筛选出来,存储到新的列表even_lst中。
示例二:删除字符串列表中的空字符串
lst = ['hello', '', 'world', '', '!', ' '] clean_lst = list(filter(lambda s: s.strip(), lst)) print(clean_lst) # ['hello', 'world', '!']
这个例子中,我们使用了lambda表达式定义了一个判断条件,即删除列表中的空字符串。使用filter()函数将满足条件的字符串存储到新的列表clean_lst中。
示例三:过滤字典中的值小于10的键值对
dct = {'a': 11, 'b': 5, 'c': 13, 'd': 2, 'e': 6}
filtered_dct = dict(filter(lambda item: item[1] >= 10, dct.items()))
print(filtered_dct) # {'a': 11, 'c': 13}
这个例子中,我们使用了lambda表达式定义了一个判断条件,即字典值大于等于10的键值对。使用filter()函数将满足条件的键值对存储到新的字典filtered_dct中。
总之,filter()函数是一个十分有用的函数,可以用于对序列进行筛选和过滤,使得我们的代码更加简洁和高效。熟练掌握filter()函数的用法,将对Python编程有很大的帮助。
