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

如何使用Python中的filter函数过滤序列中的元素

发布时间:2023-07-04 07:38:18

在Python中,filter()函数是一个内置的高阶函数,用于过滤序列中的元素。它接受两个参数,第一个参数是一个函数,用于定义过滤规则;第二个参数是一个可迭代对象(比如列表、元组、集合等),表示需要过滤的序列。filter()函数会遍历序列中的每个元素,根据函数的返回值决定是否保留该元素。

下面通过一些具体示例来演示如何使用filter()函数过滤序列中的元素。

1. 过滤偶数:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(filtered_numbers)  # 输出 [2, 4, 6, 8, 10]

上述代码使用lambda表达式定义了一个匿名函数,该函数判断输入的数是否为偶数。filter()函数通过匿名函数过滤numbers列表中的元素,并返回一个新的列表,只包含偶数。

2. 过滤长度小于等于3的字符串:

words = ['apple', 'orange', 'banana', 'kiwi', 'grape']
filtered_words = list(filter(lambda x: len(x) > 3, words))
print(filtered_words)  # 输出 ['apple', 'orange', 'banana', 'grape']

上述代码使用lambda表达式定义了一个匿名函数,该函数判断输入的字符串的长度是否大于3。filter()函数通过匿名函数过滤words列表中的元素,并返回一个新的列表,只包含长度大于3的字符串。

3. 过滤大于等于90的成绩:

scores = [80, 92, 85, 78, 95, 88]
filtered_scores = list(filter(lambda x: x >= 90, scores))
print(filtered_scores)  # 输出 [92, 95]

上述代码使用lambda表达式定义了一个匿名函数,该函数判断输入的成绩是否大于等于90。filter()函数通过匿名函数过滤scores列表中的元素,并返回一个新的列表,只包含大于等于90的成绩。

4. 过滤集合中的空元素:

my_set = {'apple', '', 'banana', 'kiwi', '', 'grape'}
filtered_set = set(filter(None, my_set))
print(filtered_set)  # 输出 {'banana', 'kiwi', 'grape', 'apple'}

上述代码使用filter()函数过滤集合my_set中的元素。由于filter()函数的第一个参数是None,表示通过返回值是否为真来进行过滤。空字符串被认为是False,非空字符串被认为是True,因此通过filter()函数过滤后的集合filtered_set中不包含空元素。

以上是几个常见的用法示例,说明了如何使用filter()函数过滤序列中的元素。通过定义合适的函数来制定过滤规则,可以根据实际需求过滤出符合条件的元素,进而进行下一步的处理或操作。