map()方法的调用方法为:map(function_to_apply, list_of_inputs)
。
- function_to_apply:函数
- list_of_inputs:一个或多个序列
该函数会将参数中的函数作用到输入的序列上,生成新的序列,该生成的序列包含了所有返回值。
如下代码所示,展示了map的使用方式,比如对输入的三个序列中的值进行减均值,除方差的操作。
def map_f(x,y,z):
mean = 128
std = 1
x = (x-mean)/std
y = (y-mean)/std
z = (z-mean)/std
return x,y,z
if __name__ == "__main__":
input_map_list_r = [126, 127, 128, 129, 130]
input_map_list_g = [126, 127, 128, 129, 130]
input_map_list_b = [126, 127, 128, 129, 130]
output_map_list = map(map_f,input_map_list_r,input_map_list_g,input_map_list_b)
output_map_list_2 = map(lambda x,y,z:((x -128)/1,(y -128)/1,(z -128)/1), input_map_list_x,input_map_list_y,input_map_list_z )
for i in output_map_list:
print(i)
output:
(-2.0, -2.0, -2.0)
(-1.0, -1.0, -1.0)
(0.0, 0.0, 0.0)
(1.0, 1.0, 1.0)
(2.0, 2.0, 2.0)
该函数中还顺便介绍了一下匿名函数的使用方式。如下代码所示,匿名函数lambda的作用就相当于上述代码中的def map_f(x,y,z)
,其作用就是把函数平铺到了代码中。
map(lambda x,y,z:((x -128)/1,(y -128)/1,(z -128)/1),\
input_map_list_x,input_map_list_y,input_map_list_z )
reduce()方法的调用方法为:reduce(function_to_apply, list_of_inputs)
。
- function_to_apply:函数
- list_of_inputs:序列
该函数首先把序列中的前两个元素作为参数传给函数,函数返回结果后,将得到的结果和序列中的第三个元素作为参数传给函数,函数计算返回值后又和第四个元素作为参数传给函数,依次类推直到序列结束。
如下代码所示,利用reduce函数就可以实现1-100的自然数求和操作。
from functools import reduce
def add_f(x,y):
return x+y
if __name__ == "__main__":
items = range(1,101)
result = reduce(add_f,items)
print(result)