问题:将一个list的每个数变为其的平方
普通的处理
list_x = [1,2,3,4,5,6,7,8] def square(x): return x*x for x in range(0,len(list_x)): list_x[x] = square(list_x[x]) print(list_x[x]) print(list_x)
map处理:
list_x = [1,2,3,4,5,6,7,8] def square(x): return x*x r = map(square,list_x) print(type(r))
print(list(r))
输出如下:
<class 'map'>[1, 4, 9, 16, 25, 36, 49, 64]
map和lambda处理
list_x = [1,2,3,4,5,6,7,8] r = map(lambda x:x*x,list_x) print(list(r))
当lambda里有多个参数时,对应的个数去取最小的那个参数个数
list_x = [1,2,3,4,5,6,7,8] list_y = [1,2,3,4,5,6,7] r = map(lambda x,y:x+y,list_x,list_y) print(list(r))
reduce
# from functools import reduce # # list_x = ['1','2','3','4','5','6'] # r = reduce(lambda x,y:x+y,list_x,'aa') #第三个参数可为无 # print(type(r)) # print(r) # map/reduce 编程模型 映射 归约 并行计算 # 函数式编程
#步伐移动 (横坐标,纵坐标) from functools import reduce list_go=[(1,2),(2,-3),(-2,3),(9,8)] r = reduce(lambda x,y:(x[0]+y[0],x[1]+y[1]),list_go) print(type(r)) print(r)
<class 'tuple'> (10, 10)