了解Python的filter()函数以进行数据过滤
发布时间:2023-07-03 23:28:15
Python中的filter()函数是用于过滤序列的内置函数。它接受一个函数和一个可迭代对象作为参数,并返回一个由满足函数条件的元素组成的新的可迭代对象。
filter()函数的基本语法如下:
filter(function, iterable)
其中,function是一个返回布尔值的函数,它用于过滤iterable中的元素。如果function返回True,则该元素会被保留在结果中;如果返回False,则该元素会被过滤掉。
iterable是一个可迭代对象,包括列表、元组、集合、字典等。
下面是一个简单的例子,使用filter()函数过滤出列表中的偶数:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def is_even(num):
return num % 2 == 0
even_numbers = list(filter(is_even, numbers))
print(even_numbers) # 输出 [2, 4, 6, 8, 10]
在上面的例子中,is_even()函数接受一个数字作为参数,并通过判断该数字是否为偶数来返回布尔值。filter()函数根据is_even()函数的返回值来过滤出列表中的偶数,并将结果存储在一个新的列表even_numbers中。
filter()函数的返回值是一个可迭代对象,需要使用list()函数将其转换为列表。
filter()函数还可以使用lambda函数来简化代码,上面的例子可以改写如下:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers) # 输出 [2, 4, 6, 8, 10]
除了过滤出满足条件的元素,filter()函数还可以过滤出None、空字符串、0等等。下面是一个例子,使用filter()函数过滤出列表中的非空字符串:
names = ['', 'Alice', '', 'Bob', '', ''] non_empty_names = list(filter(None, names)) print(non_empty_names) # 输出 ['Alice', 'Bob']
上面的例子中,使用None作为filter()函数的参数,表示过滤出非空的元素。
总结一下,filter()函数是一个用于过滤序列的函数。它接受一个函数和一个可迭代对象作为参数,并根据函数的返回值来过滤出满足条件的元素。它的返回值是一个新的可迭代对象。使用filter()函数可以简化代码,并提高代码的可读性。
