Python filter函数的使用方法及示例
Python中的内置函数filter()可以用于对序列进行筛选操作,批量过滤掉不符合条件的元素,返回一个新的可迭代对象(迭代器)。
filter()的语法结构如下:
filter(function, iterable)
其中,function为一个函数,表示用于判断当前元素是否包含在返回可迭代对象中的条件;而iterable则是一个可迭代对象,即任何可以使用for循环进行遍历的对象。
filter()的工作原理如下:
对于可迭代对象iterable中的每个元素,都将其作为输入参数传递给函数function进行判断。如果函数返回值为True,则该元素将被保留;如果函数返回值为False,则该元素被过滤掉,即不会出现在最终返回的可迭代对象中。
下面通过一些示例来更好地理解filter()的使用方法:
1.过滤奇数
实现要求:使用filter()函数过滤掉一个列表中的所有奇数。
代码如下:
# 定义一个列表
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 定义一个函数,判断当前元素是否为奇数
def is_odd(n):
return n % 2 == 1
# 调用filter()函数进行过滤操作
new_lst = list(filter(is_odd, lst))
# 输出结果
print(new_lst)
输出结果:
[1, 3, 5, 7, 9]
2.过滤空字符串
实现要求:使用filter()函数过滤掉一个列表中的所有空字符串。
代码如下:
# 定义一个列表
lst = ["", "hello", "", "world", "", ""]
# 定义一个函数,判断当前元素是否为空字符串
def is_empty(s):
return len(s) != 0
# 调用filter()函数进行过滤操作
new_lst = list(filter(is_empty, lst))
# 输出结果
print(new_lst)
输出结果:
['hello', 'world']
3.过滤负数
实现要求:使用filter()函数过滤掉一个列表中的所有负数。
代码如下:
# 定义一个列表
lst = [-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
# 定义一个函数,判断当前元素是否为负数
def is_negative(n):
return n < 0
# 调用filter()函数进行过滤操作
new_lst = list(filter(is_negative, lst))
# 输出结果
print(new_lst)
输出结果:
[-1, -3, -5, -7, -9]
4.过滤偶数
实现要求:使用filter()函数过滤掉一个元组中的所有偶数。
代码如下:
# 定义一个元组
tuple1 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
# 定义一个函数,判断当前元素是否为偶数
def is_even(n):
return n % 2 == 0
# 调用filter()函数进行过滤操作
new_tuple = tuple(filter(is_even, tuple1))
# 输出结果
print(new_tuple)
输出结果:
(2, 4, 6, 8, 10)
总结:
如上所述,Python的filter()函数可以对序列进行筛选操作,从而批量过滤掉不符合条件的元素,返回一个新的可迭代对象。filter()函数使用方便,简明明了,而且还可以与其他函数或语句结合使用,非常灵活。掌握该函数的使用方法,有助于提高编程效率,而且代码可读性也会更好。
