filter函数:使用filter函数过滤序列中不符合条件的元素
在Python中,filter函数是一个内置函数,它可以过滤序列中不符合条件的元素,返回一个新的序列,也可以返回一个迭代器。
filter函数的语法如下:
filter(function, iterable)
其中,function是一个用来判断元素是否符合条件的函数,iterable是一个可迭代对象,例如列表、元组、字典、集合等。
filter函数会迭代iterable中的每个元素,对每个元素都应用function函数来判断是否符合条件,若符合则将该元素添加到结果序列中。最终,filter函数返回一个新的序列,其中只包含符合条件的元素。
下面我们通过一些示例来更好地理解filter函数的使用。
**示例1:过滤出偶数**
假设我们有一个列表,需要过滤出其中的偶数进行操作,可以通过filter函数实现,代码如下:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = filter(lambda x: x % 2 == 0, lst) print(list(result))
输出:[2, 4, 6, 8, 10]
在这个示例中,我们首先使用lambda表达式定义了一个匿名函数,该函数的功能是判断x是否为偶数,是则返回True,否则返回False。
然后,我们调用filter函数,将lambda函数和lst作为参数传入,filter函数会依次遍历lst中的每个元素,将符合条件的元素添加到结果序列中。
最后,我们将结果序列转化为列表并打印输出。
**示例2:过滤出长度大于3的字符串**
假设我们有一个字符串列表,需要过滤出其中长度大于3的字符串进行操作,可以通过filter函数实现,代码如下:
lst = ['hello', 'world', 'python', 'programming', 'language'] result = filter(lambda x: len(x) > 3, lst) print(list(result))
输出:['hello', 'world', 'python', 'programming', 'language']
在这个示例中,我们同样使用lambda表达式定义了一个匿名函数,该函数的功能是判断x的长度是否大于3,是则返回True,否则返回False。
然后,我们调用filter函数,将lambda函数和lst作为参数传入,filter函数会依次遍历lst中的每个元素,将符合条件的元素添加到结果序列中。
最后,我们将结果序列转化为列表并打印输出。
**示例3:删除列表中的空字符串**
假设我们有一个字符串列表,需要删除其中的空字符串,可以通过filter函数实现,代码如下:
lst = ['hello', '', 'world', '', 'python', '', 'programming', 'language', ''] result = filter(lambda x: x != '', lst) print(list(result))
输出:['hello', 'world', 'python', 'programming', 'language']
在这个示例中,我们同样使用lambda表达式定义了一个匿名函数,该函数的功能是判断x是否为空字符串,是则返回False,否则返回True。
然后,我们调用filter函数,将lambda函数和lst作为参数传入,filter函数会依次遍历lst中的每个元素,将符合条件的元素添加到结果序列中。
最后,我们将结果序列转化为列表并打印输出。
因为filter函数可以返回一个迭代器,如果我们只需要迭代一次过滤器,可以直接使用for循环遍历,例如:
lst = ['hello', '', 'world', '', 'python', '', 'programming', 'language', '']
for value in filter(lambda x: x != '', lst):
print(value)
# 输出:hello world python programming language
在这个示例中,我们同样使用lambda表达式定义了一个匿名函数,该函数的功能是判断x是否为空字符串,是则返回False,否则返回True。
然后,我们通过for循环遍历filter函数返回的迭代器,依次输出符合条件的元素。
这些示例都展示了filter函数的使用,它是一种非常实用的工具,可以帮助我们更加高效地过滤序列中的元素。
