Python filter函数:如何使用filter函数来过滤一个序列,并将结果存储到列表中?
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() 函数可以让我们更加灵活的处理数据,并编写简洁、高效的代码。
