Python中filter()函数的用法及实例
filter()函数是Python内置的一个高阶函数,用于过滤序列中的元素。它的基本用法是:接受两个参数, 个参数是一个函数,第二个参数是一个可迭代对象,返回一个迭代器,迭代器生成的是在可迭代对象中被 个参数函数过滤掉的元素。
filter()函数的语法格式如下:
filter(function, iterable)
其中:
- function:一个函数,用于对可迭代对象中的每个元素进行过滤,返回值应为True或False。
- iterable:一个可迭代对象,即有__iter__()方法的对象,如列表、元组、字典等。
下面是一个简单的例子,用filter()函数过滤掉列表中的偶数元素:
def is_even(x):
return x % 2 == 0 # 判断是否为偶数
lst = [1, 2, 3, 4, 5, 6]
result = filter(is_even, lst) # 过滤掉偶数
print(list(result)) # [2, 4, 6]
这个例子中,定义了一个判断是否为偶数的函数is_even(),然后将这个函数作为 个参数传递给了filter()函数,将列表lst作为第二个参数传递给了filter()函数。执行结果是输出了被过滤掉的偶数元素。
除了使用函数对象,也可以使用lambda表达式来定义过滤条件,例如:
lst = [1, 2, 3, 4, 5, 6] result = filter(lambda x: x % 2 == 0, lst) # 过滤掉偶数 print(list(result)) # [2, 4, 6]
这个例子和之前的例子是等价的。
再看一个例子,用filter()函数将一个列表中的字符串全部变成大写:
lst = ['apple', 'Banana', 'cAt', 'Dog'] result = filter(lambda x: isinstance(x, str), lst) # 过滤出字符串 result = map(lambda x: x.upper(), result) # 将字符串转换为大写 print(list(result)) # ['APPLE', 'BANANA', 'CAT', 'DOG']
这个例子中,在使用filter()函数之前,首先要过滤掉列表中的非字符串元素,将只包含字符串的新列表作为filter()函数的第二个参数,然后使用map()函数将字符串变成大写,最后输出结果。
需要注意的是,filter()函数返回的是一个迭代器,而不是一个列表,所以如果需要输出结果,需要使用list()函数将结果转换成列表。
另外,如果要在Python3中使用filter()函数,需要使用list()函数来显式转换,即:
lst = [1, 2, 3, 4, 5, 6] result = filter(lambda x: x % 2 == 0, lst) # 过滤掉偶数 print(list(result)) # [2, 4, 6]
以上就是filter()函数的用法及实例,通过filter()函数可以方便地对序列中的元素进行过滤,尤其是当需要进行复杂的过滤操作时,使用filter()函数可以大大简化代码。
