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

使用Python的filter()函数实现列表筛选

发布时间:2023-06-18 15:46:25

Python中的filter()函数可用于从列表中筛选出符合指定条件的元素。filter()函数在每个元素上执行传递给它的函数,该函数必须返回True或False以确定该元素是否应保留。

filter()函数的语法如下:

filter(function, iterable)

其中,function是一个用于筛选元素的函数,iterable是一个可迭代对象,即列表、元组、集合等。

我们可以使用filter()函数来实现以下操作:

1. 筛选出列表中的偶数

假设我们有一个包含数字的列表,我们想从中筛选出所有的偶数。我们可以定义一个函数,该函数将一个数字作为输入并返回一个布尔值,该值取决于该数字是否为偶数。然后,我们将此函数传递给filter()函数,以便过滤掉所有的不是偶数的数字。

以下是源代码:

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

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

输出:

[2, 4, 6, 8, 10]

2. 筛选出列表中的质数

现在假设我们有一个包含数字的列表,我们想从中筛选出所有的质数。我们可以定义一个函数,该函数将数字作为输入并返回一个布尔值,该值取决于该数字是否为质数。然后,我们将此函数传递给filter()函数,以便过滤掉所有的不是质数的数字。

以下是源代码:

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
prime_numbers = list(filter(is_prime, my_list))
print(prime_numbers)

输出:

[2, 3, 5, 7]

3. 筛选出字符串列表中的所有长度超过3的字符串

假设我们有一个字符串列表,我们想从中筛选出所有长度超过3的字符串。我们可以定义一个函数,该函数将字符串作为输入并返回一个布尔值,该值取决于该字符串的长度是否大于3。然后,我们将此函数传递给filter()函数,以便过滤掉所有长度小于或等于3的字符串。

以下是源代码:

def is_long_string(s):
    return len(s) > 3

my_list = ["apple", "ball", "cat", "doll", "elephant", "frog"]
long_strings = list(filter(is_long_string, my_list))
print(long_strings)

输出:

['apple', 'doll', 'elephant', 'frog']

总结

使用Python的filter()函数可以轻松地从列表中筛选出符合条件的元素,并且非常灵活,可以根据不同的需求编写不同的筛选函数。