如同字面意思,可以原地保留某個對象中滿足指定要求的元素。
例如,我們想要去除列表中的指定數,給定一個數組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)