Python filter()函数的简单理解与用法

如同字面意思,可以原地保留某个对象中满足指定要求的元素。

例如,我们想要去除列表中的指定数,给定一个数组A如下:

A = [3, 7, 8, 6, 9, 8, 2, 1, 8]

现在我们想要去除里面的所有数字8。一个最简单的方法当然是写for循环:

A = [3, 7, 8, 6, 9, 8, 2, 1, 8]
for a in A:
    if a == 8:
        A.remove(8)
        
print(A)

但是这样的话就不太简洁。利用filter函数的写法如下:

A = [3, 7, 8, 6, 9, 8, 2, 1, 8]
def not_8(x):
    return x != 8
A = filter(not_8, A)

print(list(A))

这里将判定条件单独封装出来是为了方便理解,实际上:

filter(not_8, A)

与匿名函数写法

filter(lambda x: x != 8, A)

是等同的,后者在实际代码中更为常见。


总结,形式化的语法规范如下:

filter(function, iterable)
  • iterable:可被迭代(被for循环)的对象,最常用的就是列表了
  • function:判定函数,当iterable中元素传入时,返回为True的被保留,反之不被保留

版权声明:本文为qq_40714949原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。