如何使用Python中的Filter函数过滤列表中的偶数?
发布时间:2023-05-24 22:14:43
Python 中的 filter 函数通常用于从序列中过滤出满足特定条件的元素,并返回一个可以迭代的新列表。语法如下:
filter(function, iterable)
其中 function 是过滤的条件, iterable 则是待过滤的序列(可迭代对象)。假如我们要过滤出列表中的偶数,可以把 function 设为一个判断条件: x % 2 == 0,这里 % 表示取模,即返回 x 除以 2 的余数,判断结果为真则说明 x 是偶数。
接下来我们演示一下如何使用 filter 函数过滤列表中的偶数:
# 初始列表
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 判断函数,返回 True 表示元素是偶数,False 表示元素是奇数
def is_even(x):
return x % 2 == 0
# 使用 filter 函数过滤列表中的偶数
result = filter(is_even, lst)
print(list(result))
运行结果为 [2, 4, 6, 8, 10],说明我们成功地从列表中过滤出了全部的偶数。
如果上述代码中的判断函数 is_even 只用了一次,也可以用 lambda 函数来代替,从而避免定义一个单独的函数:
result = filter(lambda x: x % 2 == 0, lst)
请注意,filter 返回的是一个迭代器对象,我们需要使用 list 函数将其转换为列表并打印出来。
在对列表进行过滤时,有一点需要注意,即 filter 仅仅返回符合条件的元素,或者说返回值所对应的列表是原列表的子集。在本例中,我们过滤出了列表中的 5 个偶数,而原列表中则有着 10 个元素。
