filter()函數(shù)是 Python 內(nèi)置的另一個有用的高階函數(shù),filter()函數(shù)接收一個函數(shù) f 和一個list,這個函數(shù) f 的作用是對每個元素進行判斷,返回 True或 False,filter()根據(jù)判斷結(jié)果自動過濾掉不符合條件的元素,并返回一個迭代器,可以迭代出所有符合條件的元素。
例如,要從一個list [1, 4, 6, 7, 9, 12, 17]中刪除偶數(shù),保留奇數(shù),首先,要編寫一個判斷奇數(shù)的函數(shù):
def is_odd(x): return x % 2 == 1
然后,利用filter()過濾掉偶數(shù):
for item in filter(is_odd, [1, 4, 6, 7, 9, 12, 17]): print(item)
結(jié)果:1,7,9,17。
利用filter()函數(shù),可以完成很多很有用的功能,例如,刪除 None 或者空字符串:
def is_not_empty(s): return s and len(s.strip()) > 0 for item in filter(is_not_empty, ['test', None, '', 'str', ' ', 'END']): print(item)
結(jié)果:test, str, END
注意:注意: s.strip()會默認刪除空白字符(包括'\n', '\r', '\t', ' '),如下:
s = ' 123' s.strip() # ==> 123 s= '\t\t123\r\n' s.strip() # ==> 123
請利用filter()過濾出1~100中平方根是整數(shù)的數(shù),即結(jié)果應該是:1, 4, 9, 16, 25, 36, 49, 64, 81, 100。
參考答案:
import math def is_sqrt(x): r = int(math.sqrt(x)) return r * r == x for item in filter(is_sqrt, range(1, 101)): print(item)
請驗證,完成請求
由于請求次數(shù)過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報