Python中的filter()函数: 过滤列表中的元素
发布时间:2023-05-30 17:36:38
Python中的filter()函数是一种非常有用的函数,通过该函数可以方便地对列表中的元素进行过滤,只保留符合条件的元素。该函数可以接收一个函数和一个可迭代对象作为参数,返回一个由符合条件的元素构成的列表。
filter()函数的语法如下:
filter(function, iterable)
其中:
- function:用于过滤的函数,该函数接收一个元素作为参数,返回一个bool类型的值,该函数返回True则保留该元素,否则舍弃该元素。
- iterable:可迭代对象,例如列表、元组、集合等。
下面通过一些示例来看看该函数的用法。
## 示例1:过滤列表中的偶数
# 过滤列表中的偶数
def is_even(n):
return n % 2 == 0
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = list(filter(is_even, lst))
print(result) # [2, 4, 6, 8]
上述代码中,我们定义了一个过滤函数is_even(),判断一个数是否为偶数。然后我们将该函数作为参数传递给了filter()函数,用于过滤列表lst中的元素。最终返回的result中只包含了列表中的偶数。
## 示例2:过滤列表中的空字符串
# 过滤列表中的空字符串 lst = ['a', '', 'b', ' ', 'c', ' '] result = list(filter(lambda x: x.strip() != '', lst)) print(result) # ['a', 'b', 'c']
上述代码中,我们使用了lambda表达式来定义过滤函数,判断一个字符串是否为空。由于对于多个空格组成的字符串我们认为仍然是空字符串,因此我们在判断之前先将字符串进行了去首尾空格的操作。
## 示例3:过滤元组中的元素
# 过滤元组中的元素 tup = (1, 2, 3, 4, 5, 6, 7, 8, 9) result = tuple(filter(lambda x: x % 3 == 0, tup)) print(result) # (3, 6, 9)
上述代码中,我们使用了lambda表达式定义过滤函数,判断一个元素是否为3的倍数。由于元组不支持直接修改元素,因此我们最终使用tuple()函数将结果转换为了元组类型。
## 总结
Python中的filter()函数是一个很实用的函数,方便地实现了对列表、元组等可迭代对象进行过滤的操作。我们可以根据自己的需要定义过滤函数,并将其作为参数传递给filter()函数,得到符合要求的元素列表。
