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

如何使用Python内置函数filter()对列表进行条件过滤

发布时间:2023-06-10 13:29:07

Python内置函数filter()可以用来过滤列表中符合条件的元素,返回一个新的列表。本文将介绍如何使用Python内置函数filter()对列表进行条件过滤。

1. 简介

filter()函数的格式如下:

filter(function, iterable)

其中,function为筛选函数,iterable是一个可迭代对象,如列表、元组、字符串等等。筛选函数的作用是对可迭代对象中的每一个元素进行筛选,如果该元素符合条件,则保留下来;如果该元素不符合条件,则过滤掉。

函数filter()返回的是一个filter对象,该对象可以通过list()函数转换成列表,或者直接使用for循环输出结果。

2. 过滤整数列表

例1:过滤出列表中所有的偶数。

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = list(filter(lambda x: x % 2 == 0, a))
print(b)

输出结果为:[2, 4, 6, 8, 10]

这里用到了lambda表达式,lambda表达式可以替代一些简单的函数,其格式为: lambda argument_list: expression 。在这个例子中,argument_list为空,expression为 x%2==0 ,意思是判断x是否为偶数。

例2:过滤出列表中大于5的数。

a = [1, 5, 3, 8, 10, 2, 9, 7]
b = list(filter(lambda x: x > 5, a))
print(b)

输出结果为:[8, 10, 9, 7]

3. 过滤字符串列表

例3:过滤出所有长度大于等于3的字符串。

a = ['a', 'bc', 'abc', 'def']
b = list(filter(lambda x: len(x) >= 3, a))
print(b)

输出结果为:['bc', 'abc', 'def']

4. 过滤元组列表

例4:过滤出元组中第二个元素不为0的元组。

a = [(1, 0), (2, 1), (3, 2), (4, 0), (5, 3)]
b = list(filter(lambda x: x[1] != 0, a))
print(b)

输出结果为:[(2, 1), (3, 2), (5, 3)]

5. 自定义筛选函数

除了使用lambda表达式作为筛选函数外,我们还可以定义一个函数来进行筛选。

例5:通过自定义函数过滤出所有大于5的数。

def is_gt(x):
    return x > 5

a = [1, 5, 3, 8, 10, 2, 9, 7]
b = list(filter(is_gt, a))
print(b)

输出结果为:[8, 10, 9, 7]

6. 多个条件筛选

有时候我们需要同时满足多个条件才能筛选出目标元素。这时可以使用and运算符或者or运算符进行多个条件筛选。

例6:过滤出0~100之间的偶数。

a = range(101)
b = list(filter(lambda x: x % 2 == 0 and x >= 0 and x <= 100, a))
print(b)

输出结果为:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]

7. 总结

filter()函数可以用来过滤列表中符合条件的元素。使用lambda表达式或自定义函数作为筛选函数,可以在不改变原列表的前提下返回一个新的列表。同时,filter()函数也可以用来过滤字符串列表、元组列表等等。在实际编程过程中,我们可以根据具体的需求来灵活使用filter()函数,提高程序的执行效率。