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

Python中“filter()”函数的使用

发布时间:2023-05-30 07:42:52

在 Python 中,filter() 函数用于过滤序列,可以通过自定义函数过滤不需要的元素,只留下符合要求的元素。

filter() 函数的语法如下:

filter(function, iterable)

其中,function 是过滤的函数,接收一个参数,如果返回值为 True,则该元素会被保留,否则被过滤掉。iterable 是可迭代对象,可以是列表、元组、字典、集合等。

下面是一个例子,定义一个函数 is_odd 判断一个数是否为奇数,用 filter() 函数输出列表中所有的奇数:

def is_odd(n):

    return n % 2 == 1

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]

lst_odd = list(filter(is_odd, lst))

print(lst_odd)

# [1, 3, 5, 7, 9]

在这个例子中,定义了一个函数 is_odd,用于判断一个数 n 是否为奇数,然后通过 filter() 函数,对列表 lst 中的元素进行过滤,只保留判断为 True 的元素,即保留所有的奇数,最终输出 lst_odd 列表。

filter() 函数也可以使用 lambda 表达式定义函数,例如下面的例子,用 lambda 表达式定义判断一个数是否为偶数的函数:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]

lst_even = list(filter(lambda x: x % 2 == 0, lst))

print(lst_even)

# [2, 4, 6, 8]

这个例子中,使用 lambda 表达式定义判断一个数是否为偶数的函数,直接在 filter() 函数中使用 lambda 表达式进行过滤,保留判断为 True 的元素,即保留所有的偶数,最终输出 lst_even 列表。

在使用 filter() 函数时,可以添加多个过滤条件,只有所有的条件都成立时,该元素才会被保留。例如下面的例子,用 filter() 函数输出列表中 1-10 的偶数并且不是 4 的倍数:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

lst_odd = list(filter(lambda x: x % 2 == 0 and x % 4 != 0, lst))

print(lst_odd)

# [2, 6, 8, 10]

在这个例子中,使用了 lambda 表达式定义判断一个数是否为偶数并且不是 4 的倍数的函数,然后使用 filter() 函数进行过滤,保留判断为 True 的元素,即保留所有 1-10 中的偶数并且不是 4 的倍数的数,最终输出 lst_odd 列表。

总之,filter() 函数在 Python 中非常常用,可以快速过滤不需要的元素,对数据操作非常方便。