如何使用 Python 的 filter() 函数来过滤列表项
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() 函数可以使代码更加简洁、明了,特别是对于需要对列表进行复杂筛选的任务,其价值更加凸显。
