Python中有很多內置函數,內置函數會使代碼變得更加精簡且高效。這篇博文主要介紹filter函數。
filter() 函數,filter英文含義爲過濾,在Python中用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
該函數有兩個參數,一個爲函數,一個爲序列,序列的每個元素作爲參數傳遞給函數進行判斷,然後返回。
函數形式:
filter(function, iterable)
function:判斷函數
iterable:可迭代對象
在使用該函數時,也遇到一些坑,注意:一定要明白含義,iterable是列表,如果輸入一個字符串,會產生什麼樣的效果呢?請看下面案例:
以下函數功能,是爲了過濾字符串marks中包含的符號
marks=list("~!!@#$¥%^……&*(())/[【]】{{}}<>_+−=<>.,‘“|\"::-——...\-")
result = list(filter(lambda x: x not in marks, '最喜歡的.地方'))
print (result)
結果:可以看到,把這句話的每個字都拆開了,但是,‘最喜歡的’‘.地方’是兩個詞,我們想一個詞一個詞輸出,應該怎麼做呢
['最', '喜', '歡', '的', '地', '方']
marks=list("~!!@#$¥%^……&*(())/[【]】{{}}<>_+−=<>.,‘“|\"::-——...\-")
result = list(filter(lambda x: x not in marks, ['最喜歡的','.地方']))
print (result)
結果:可以看出,函數是將‘.地方’當做一個整體,去判斷,因此,轉成list,符號應該單獨存放
['最喜歡的', '.地方']
如下:
marks=list("~!!@#$¥%^……&*(())/[【]】{{}}<>_+−=<>.,‘“|\"::-——...\-")
result = list(filter(lambda x: x not in marks, ['.','地方']))
print (result)
結果:
['地方']
這就達到了想要的效果了~