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

如何使用 Python 的 filter() 函数来过滤列表项

发布时间:2023-06-05 11:36:36

Python 中的 filter() 函数可以用来过滤掉列表中不符合特定条件的项,从而得到一个新的列表。该函数的基本语法如下:

filter(function, iterable)

其中,function 表示用于过滤的函数,iterable 表示可迭代对象,比如列表、元组、集合等。函数会对可迭代对象中的每个元素进行判断,如果满足函数的条件,就会将该元素加入到结果列表中。

下面我们将详细介绍如何使用 filter() 函数来过滤列表项。

1. 过滤出偶数

我们先看一个简单的例子,假设我们有一个整数列表,我们想要从中筛选出所有的偶数。可以用以下代码实现:

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

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

result = list(filter(is_even, nums))
print(result)

这段代码的功能是将列表 nums 中的每个元素传递到 is_even() 函数中进行判断,如果符合条件(即该元素为偶数),就将该元素加入到结果列表中。运行结果如下:

[2, 4, 6, 8, 10]

2. 过滤出包含指定字符的字符串

接下来我们看一个例子,假设我们有一个字符串列表,我们想要从中筛选出所有包含指定字符的字符串。可以用以下代码实现:

fruits = ['apple', 'banana', 'kiwi', 'orange', 'watermelon']

def contains_char(s):
    return 'a' in s

result = list(filter(contains_char, fruits))
print(result)

这段代码的功能是将列表 fruits 中的每个元素传递到 contains_char() 函数中进行判断,如果符合条件(即该元素包含字符 'a'),就将该元素加入到结果列表中。运行结果如下:

['apple', 'banana', 'watermelon']

3. 过滤出长度大于指定值的字符串

接下来我们看一个例子,假设我们有一个字符串列表,我们想要从中筛选出所有长度大于指定值的字符串。可以用以下代码实现:

fruits = ['apple', 'banana', 'kiwi', 'orange', 'watermelon']

def is_longer_than(s, n):
    return len(s) > n

result = list(filter(lambda s: is_longer_than(s, 5), fruits))
print(result)

这段代码的功能是将列表 fruits 中的每个元素传递到 is_longer_than() 函数中进行判断,如果符合条件(即该元素的长度大于 5),就将该元素加入到结果列表中。注意,这里使用了 lambda 函数来简化代码。运行结果如下:

['banana', 'watermelon']

4. 过滤出数值在指定范围内的元素

接下来我们看一个例子,假设我们有一个整数列表,我们想要从中筛选出所有在指定范围内的元素。可以用以下代码实现:

nums = [1, 22, 3, 45, 5, 68, 7, 89, 10]

def in_range(x, a, b):
    return a <= x <= b

result = list(filter(lambda x: in_range(x, 20, 70), nums))
print(result)

这段代码的功能是将列表 nums 中的每个元素传递到 in_range() 函数中进行判断,如果符合条件(即该元素在范围 [20, 70] 内),就将该元素加入到结果列表中。运行结果如下:

[22, 45, 68]

总结

在本文中,我们介绍了如何使用 Python 的 filter() 函数来过滤列表项。具体来说,我们展示了如何过滤出偶数、包含指定字符的字符串、长度大于指定值的字符串、数值在指定范围内的元素等。使用 filter() 函数可以使代码更加简洁、明了,特别是对于需要对列表进行复杂筛选的任务,其价值更加凸显。