python之函数式编程

1.li=[1,2,3,4,5]

   def add(x):

           return x+1

 

   def  test(func,array):

           res=[]

           for i in array:

                 num=func(i)

                 res.append(num)

          return res

   print(test(add,li))

   print(test(lambda x:x**2,li))                     //输出结果为[2, 3, 4, 5, 6]
                                                                                       [1, 4, 9, 16, 25]

   res=map(add,li)

   for i in res:

          print(i)                                        //使用map()内置函数

   print(list(map(add,li)))

2.li=['yue_xiao_b','yue_jing_b','yue_lin','problem']

 def test(array):
res=[]
for i in array:
if not i.startswith('yue'):
res.append(i)
return res
print(test(li)) //输出结果为['problem']
print(list(filter(lambda n:n.endswith('b'),li))) //输出结果为['yue_xiao_b', 'yue_jing_b'],filter()内置函数
3.from functools import reduce
li=[1,3,5,10]
def test(func,array,init=None):
if init is None:
res=li.pop(0)
else:
res=init
for i in array:
res=func(res,i)
return res
print(test(lambda x,y:x*y,li,10)) //输出结果为1500
print(reduce(lambda x,y:x*y,li,10))  //reduce()内置函数
4.小结:
map()处理得到的结果是一个'列表','列表'中每个元素位置不变,只是在原来的基础上进行了加工
filter()遍历序列中的每个元素,判断其布尔值,如果为True则留下来
reduce()处理序列,并对其进行相应的合并操作

 

上一篇:PAT1020月饼


下一篇:Java 每日练习 2