一、map类
map会把集合里的每一个元素都传入到square()函数中,并接收square()函数的返回结果
list_x=[1,2,3,4,5,6,7,8]
list_y=[1, 4, 9, 16, 25, 36, 49, 64]
def square(x):
return x*x
r=map(square,list_x)
print(list(r))
#>>>[1, 4, 9, 16, 25, 36, 49, 64]
#map会把集合里的每一个元素都传入到square()函数中,并接收square()函数的返回结果
map的作用等同于for循环:
(map的实现机制)
#map的实现机制:
for x in list_x:
return x*x
使用匿名函数简化代码:
推荐使用!!!
#使用匿名函数简化代码
list_x=[1,2,3,4,5,6,7,8]
r=map(lambda x:x*x,list_x)
定义多个参数:
list_x=[1,2,3,4,5,6,7,8]
list_y=[1,2,3,4,5,6]
r=map(lambda x,y:x*x+y,list_x,list_y)
print(list(r))
#>>>[2, 6, 12, 20, 30, 42]
#list_x后两个不进行计算
>>>[2, 6, 12, 20, 30, 42]
list_x后两个不进行计算
二、reduce()函数
reduce是一个函数 使用时先导入库
from functools import reduce
#连续计算,连续调用lambda
list_x=[1,2,3,4,5,6,7,8]
r=reduce(lambda x,y:x+y,list_x)
print(r)
#>>>36
#<===>((((((1+2)+3)+4)+5)+6)+7)+8
连续计算,连续调用lambda
<===>((((((1+2)+3)+4)+5)+6)+7)+8
最后一个参数是初始值:
r=reduce(lambda x,y:x+y,list_x,10)
#最后一个参数是初始值
结果>>>46<===>(((((((10+1)+2)+3)+4)+5)+6)+7)+8
补充:map/reduce 编程模式 map(映射) reduce(归约) 两者结合可以进行并行计算
reduce 可以解决旅行者移动问题:左右前后移动位置输出
三、filter过滤器
list_x=[1,0,1,0,0,1]
list_y=['a','B','c','D','e','F']
#过滤大小写
r=filter(lambda x:True if x==1 else False,list_x)
#<==>r=filter(lambda x:x,list_x)
print(list(r))#>>>[1, 1, 1]
补充:
1、函数式编程 lisp:函数式编程的鼻祖 (函数:map\reduce\filter,算子:lambda)
2、命令式编程 def\if else\for