Python中的filter()函数以及应用实例
Python中的filter()函数是一种内置函数,它的作用是从可迭代对象中过滤出满足指定条件的元素,并返回一个新的可迭代对象。其语法如下:
filter(function, iterable)
其中,function是一个用来判断元素是否符合条件的函数,它的返回值必须是一个布尔值,True表示保留该元素,False表示过滤掉该元素。iterable则是待过滤的可迭代对象。
下面是filter()函数的一个简单示例:
# 过滤掉偶数元素 lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] result = filter(lambda x: x % 2 == 1, lst) print(list(result)) # [1, 3, 5, 7, 9]
在这个例子中,我们使用了lambda表达式来定义一个匿名函数,判断元素是否是奇数。然后将lst列表作为可迭代对象传递给filter()函数进行过滤,最终得到了一个由奇数元素组成的列表。需要注意的是,filter()函数返回的是一个迭代器对象,需要使用list()函数将其转为列表。
除了lambda表达式外,我们也可以使用自定义函数作为filter()函数的 个参数。下面是一个更复杂一些的示例,展示如何使用自定义函数过滤出字符串列表中长度超过5的字符串:
# 过滤掉长度小于等于5的字符串
lst = ['apple', 'pear', 'banana', 'orange', 'kiwi']
def filter_func(x):
if len(x) > 5:
return True
else:
return False
result = filter(filter_func, lst)
print(list(result)) # ['banana', 'orange']
在这个例子中,我们定义了一个名为filter_func的函数,用来判断字符串的长度是否大于5。这个函数的返回值类型和lambda表达式相同,都是布尔值。然后将lst列表和这个函数传递给filter()函数进行过滤,最终得到了一个由长度大于5的字符串组成的列表。
除了单纯过滤元素外,filter()函数还可以用来去重。例如,我们可以使用filter()函数去掉列表中的重复元素:
# 去重 lst = [1, 2, 2, 3, 3, 3, 4, 5, 5] result = list(filter(lambda x: lst.index(x) == lst.index(x, len(lst)-lst[::-1].index(x))-1, lst)) print(result) # [1, 2, 3, 4, 5]
在这个例子中,我们使用了lambda表达式来判断元素在列表中是否重复,然后通过filter()函数进行过滤,最终得到了一个去重后的列表。
除了以上示例,filter()函数还可以用来过滤嵌套列表、字典等数据类型中的元素,具有广泛的应用范围。
总的来说,filter()函数是Python中一个很重要、很实用的函数,它可以方便地对可迭代对象进行过滤,代码简洁、易懂。在应用中,我们可以根据实际情况自定义过滤条件,灵活运用。
