简单的来说,在python中 map 用于遍历,filter 用于筛选。
map(function,list)
让传入的可迭代数据 list 内的所有数据都使用传入的function函数,返回使用函数后的数组。
filter (function,list)
同map,但返回数据为 函数返回为True的部分传入数据
注意,两者返回的数据都无法直接打印,因为返回的数据实质是一个map|filter 可迭代对象,我们需要对其转换为list等可直接输出的对象。
用例
list_1 = [i for i in range(10)]
function_1 = lambda x : x%2
map_1 = map(function_1, list_1)
filter_1 = filter(function_1, list_1)
print(map_1)
print(filter_1)
print(list(map_1))
print(list(filter_1))
运行结果
在python中,除了0,False,“” 以外,代表的布尔值都是True
本次用例使用的函数用的是lambda匿名函数的写法
上行代码结合了map与filter 两个方法,可以使用一行代码书写出7,8行代码带来的效果
上行代码出处:cv2 角点检测