顧名思義,filter過濾列表中的元素,并且返回一個(gè)由所有符合要求的元素所構(gòu)成的列表,符合要求即函數(shù)映射到該元素時(shí)返回值為True. 這里是一個(gè)簡短的例子:
number_list = range(-5, 5)
less_than_zero = filter(lambda x: x < 0, number_list)
print(list(less_than_zero))
# 譯者注:上面print時(shí),加了list轉(zhuǎn)換,是為了python2/3的兼容性
# 在python2中filter直接返回列表,但在python3中返回迭代器
# 因此為了兼容python3, 需要list轉(zhuǎn)換一下
# Output: [-5, -4, -3, -2, -1]
這個(gè)filter類似于一個(gè)for循環(huán),但它是一個(gè)內(nèi)置函數(shù),并且更快。
注意:如果map和filter對(duì)你來說看起來并不優(yōu)雅的話,那么你可以看看另外一章:列表/字典/元組推導(dǎo)式。
譯者注:大部分情況下推導(dǎo)式的可讀性更好