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

如何使用Python中的filter()函数在列表中过滤元素?

发布时间:2023-05-26 12:42:32

Python中的filter()函数可以用于在列表中过滤元素,它可以根据指定的条件或函数对列表进行过滤,并返回一个新的列表,其中只包含符合条件的元素。

使用filter()函数的语法如下:

filter(function, iterable)

其中,function是过滤条件的函数,也可以是一个Lambda表达式,iterable是要进行过滤的可迭代对象。

例如,我们有一个包含数字的列表,想要将其中的偶数筛选出来,可以使用filter()函数:

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

even_nums = list(filter(lambda num: num % 2 == 0, num_list))

print(even_nums)  # [2, 4, 6, 8, 10]

这里,我们使用了Lambda表达式作为过滤条件,判断条件为num % 2 == 0,即只保留偶数。

需要注意的是,filter()函数返回的是一个filter对象,需要将其转化为列表才能输出。

filter()函数还可以接收多个参数进行过滤,例如我们有两个列表,一个包含人名,一个包含他们的年龄,想要将年龄大于18岁的人名筛选出来,可以这样操作:

names = ["Tom", "Jerry", "Mike", "Amy"]
ages = [21, 19, 16, 20]

adults = list(filter(lambda x: x[1] > 18, zip(names, ages)))

print(adults)  # [('Tom', 21), ('Amy', 20)]

这里,我们使用了zip()函数将两个列表打包为一个元组列表,再使用Lambda表达式过滤出年龄大于18岁的元组,最后返回的也是一个包含元组的列表。

除了Lambda表达式,filter()函数还可以接受自定义的函数作为参数。例如,我们有一个函数is_positive用于判断一个数是否为正数,这时使用filter()函数可以这样实现:

def is_positive(num):
    return num > 0

num_list = [-2, -1, 0, 1, 2, 3, 4, 5]

positive_nums = list(filter(is_positive, num_list))

print(positive_nums)  # [1, 2, 3, 4, 5]

这里,is_positive()函数接受一个参数num,返回True或False,用于判断是否为正数。然后,我们将is_positive()作为参数传递给filter()函数,实现对num_list列表中正数的过滤,返回一个只包含正数的新列表。