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

如何使用Python内置函数filter()筛选满足特定条件的列表元素并返回新列表?

发布时间:2023-06-17 23:45:15

Python内置函数filter()可以将一个函数作用于一个序列或者可迭代对象上,返回一个新的可迭代对象,其中的元素是序列中满足指定条件的元素。

使用filter()可以有效地筛选一个列表中满足特定条件的元素,然后返回新的列表。下面是一个简单的例子:

# 定义一个函数,判断一个数字是否为偶数
def is_even(n):
    return n % 2 == 0

# 定义一个列表
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 使用filter()函数筛选出列表中的偶数
even_numbers = list(filter(is_even, numbers))

# 输出筛选出的偶数
print(even_numbers)

上述代码中,首先定义了一个函数is_even(),用于判断一个数字是否为偶数。然后,定义了一个包含数字1到10的列表numbers。接着,使用filter()函数筛选出列表中的偶数,存储在名为even_numbers的列表中。最后,输出筛选出的偶数。

在这个例子中,filter()函数使用了is_even()函数来作为筛选条件,也就是通过对numbers中的每个元素调用is_even()函数进行筛选,返回一个新的列表,其中只包含满足is_even()函数条件的元素。

filter()函数的语法如下:

filter(function, iterable)

其中,function是判断条件函数,接受一个参数,返回一个Boolean值,表示是否满足条件;iterable是序列或者可迭代对象,可以是列表、元组、字典、集合等。

可以通过定义不同的函数来满足不同的筛选条件。例如:

# 定义一个函数,判断字符串中是否包含指定字符
def has_char(char):
    def inner(string):
        return char in string
    return inner

# 定义一个包含字符串的列表
words = ['apple', 'banana', 'cherry', 'durian', 'grape']

# 使用filter()函数筛选出列表中包含字母'a'的字符串
has_a = list(filter(has_char('a'), words))

# 输出筛选结果
print(has_a)

在这个例子中,先定义了一个函数has_char(char),用于返回一个内部函数inner(string),inner(string)函数用来判断一个字符串中是否包含指定的字符char。然后,定义了一个包含几个字符串的列表words。最后,使用filter()函数筛选出列表中包含字母’a’的字符串并存储在has_a列表中。

总体来说,在Python中使用内置函数filter()可以很方便地对列表等序列类型进行筛选,只需要定义一个判断条件函数,并传入筛选的序列或者可迭代对象,就能够返回具有相同条件的元素组成的新列表。