技术导语: 既然map和filter函数使用方法一样,能否通过map来实现过滤的功能,又或者通过filter来实现映射变换,闲来无聊,恶意测试了下
def f1(x): if x>20: return x*2 else: return 0
def f2(x): return x>20
data=[30,12,43]
>> mapresult=map(f1,data) >> listresult=list(mapresult) >> print(listresult) [60,0,86]
>> filterresult=filter(f1,data) >> listresult=list(filterresult) >> print(listresult) [30,43]
>> mapresult=map(f2,data) >> listresult=list(mapresult) >> print(listresult) [True,False,True]
>> filterresult=filter(f2,data) >> listresult=list(filterresult) >> print(listresult) [30,43]
1、filter函数中return x>20等同于if x>20: return x;
2、map函数中return x>20等同于if x>20: return True else: return False。
3、样例2说明filter函数不支持映射变换,仅会输出过滤后数据,如果不定义过滤条件,则输出全部数据。