python之函数式编程

血红的双手。 提交于 2020-02-04 15:14:47

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()处理序列,并对其进行相应的合并操作        

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!