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

Python filter函数:如何使用filter函数来过滤一个序列,并将结果存储到列表中?

发布时间:2023-06-22 01:32:29

Python 中的 filter() 函数是一个高阶函数,它可以用于过滤序列中的元素,只保留符合条件的元素。 filter() 函数的使用非常简单,只需要提供一个函数和一个序列作为参数,函数将作为过滤规则,对序列中的每个元素进行判断,如果满足条件就保留,否则就过滤掉。

下面是 filter() 函数的基本语法:

filter(function, iterable)

其中 function 是一个函数,用于判断 iterable 序列中的每个元素是否符合过滤条件。 iterable 是一个可迭代对象,比如列表、元组、集合、字典等等。

函数 function 必须返回一个布尔值 True 或 False,用来判断 iterable 中的每个元素是否符合过滤条件。如果返回 True,则保留该元素,否则就过滤掉。最终,filter() 函数将返回一个过滤后的新序列,该序列由符合过滤条件的元素构成。

下面是一个简单的例子,使用 filter() 函数过滤一个列表中的偶数,并将结果存储在新列表中:

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

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_nums = list(filter(is_even, nums))
print(even_nums)
# 输出:[2, 4, 6, 8]

在上述例子中,我们定义了一个函数 is_even(),用于判断传递的参数是否为偶数。然后我们使用 filter() 函数来过滤 nums 列表中的元素,并将过滤后的结果转换成列表类型,并赋值给变量 even_nums。最后我们输出变量 even_nums 的值,结果为 [2, 4, 6, 8],即过滤后保留的偶数元素的列表。

除了使用自定义的函数作为过滤规则,我们也可以使用 lambda 表达式作为过滤规则来简化代码。下面是一个使用 lambda 表达式的例子:

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

在上述例子中,我们使用 lambda 表达式定义了一个匿名函数,该函数仅接收一个参数 x,用于判断 x 是否为偶数。然后我们使用 filter() 函数来过滤 nums 列表中的元素,并将过滤后的结果转换成列表类型,并赋值给变量 even_nums。最后我们输出变量 even_nums 的值,结果为 [2, 4, 6, 8],即过滤后保留的偶数元素的列表。

总的来说,Python 中的 filter() 函数非常实用,它可以用于过滤任何可迭代对象中的元素,并将符合条件的元素存储到一个新序列中。使用 filter() 函数可以让我们更加灵活的处理数据,并编写简洁、高效的代码。