欢迎访问宙启技术站
智能推送

Python中的filter()函数–用于过滤、删除或筛选列表元素

发布时间:2023-09-10 16:26:39

Python中的filter()函数是一个内置函数,用于过滤、删除或筛选列表元素。它接受两个参数:一个是函数,一个是可迭代对象,比如列表。

filter()函数的作用是将可迭代对象中的每个元素依次传入函数中进行判断,如果函数返回值为True,则该元素被保留下来,否则被过滤掉。最终将返回一个由满足条件的元素组成的新列表。

下面是使用filter()函数的一些示例:

Example 1: 过滤偶数

def is_even(n):
    return n % 2 == 0

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(is_even, numbers))

print(even_numbers)  # 输出:[2, 4, 6, 8, 10]

在这个例子中,我们定义了一个函数is_even(),判断一个数是否为偶数。然后我们使用filter()函数将列表numbers中的所有偶数保留下来,并将结果转换为列表even_numbers。

Example 2: 删除空字符串

def is_empty_string(s):
    return s != ""

strings = ["hello", "", "world", "", "python"]
non_empty_strings = list(filter(is_empty_string, strings))

print(non_empty_strings)  # 输出:["hello", "world", "python"]

在这个例子中,我们使用filter()函数将列表strings中的所有非空字符串保留下来,将结果转换为列表non_empty_strings。

Example 3: 筛选满足条件的元素

def is_divisible_by_3_and_5(n):
    return n % 3 == 0 and n % 5 == 0

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20]
divisible_by_3_and_5 = list(filter(is_divisible_by_3_and_5, numbers))

print(divisible_by_3_and_5)  # 输出:[15]

在这个例子中,我们定义了一个函数is_divisible_by_3_and_5(),判断一个数是否同时能被3和5整除。然后我们使用filter()函数将列表numbers中满足该条件的元素保留下来,并将结果转换为列表divisible_by_3_and_5。

需要注意的是,filter()函数返回一个迭代器对象,如果要将结果转换为列表,需要使用list()函数将其转换。

除了使用自定义函数作为filter()的 个参数,我们还可以使用lambda函数来更简洁地实现过滤条件。

例子:使用lambda函数过滤偶数

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda n: n % 2 == 0, numbers))

print(even_numbers)  # 输出:[2, 4, 6, 8, 10]

在这个例子中,我们使用lambda函数定义了一个简单的条件判断表达式,过滤出列表numbers中的偶数。