高阶函数编程

Posted 张荆明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高阶函数编程相关的知识,希望对你有一定的参考价值。

 

高阶函数编程:

  高阶函数编程是在原有的编程基础上加以优化,使得代码在编译或阅读的过程中更加的方便。

  不过个人觉得,高阶函数编程的使用过程中,首先需要一个人对函数使用和运算方面有很强或很熟练的思维性,至少要熟练使用函数式编程才能更好的去运用高阶函数编程。

  高阶函数 有三种使用方式:map / filter / sorted

我们以一道题为例(map)

                 def num(x):

                         if x%2==0:

                                 return x

                         print(tuple(map(num(,range(10))))

                                

        举一个简单的例子来说,这样大家相对理解起来会更容易一些。

        先定义一个函数,设置一个或多形参用来接收实参所传递的值,在def函数下设定一个我们自己想要判定条件,用return返回处理后的可迭代对象,传入map中进行打包迭代(map会将返回值打包迭代生成一个“地址)。当map中的参数不再对map提供数据时,此步骤自动结束。

 

如图所示:

                  

 

  第1步:我设定了一个用函数内求偶数条件,第2步:用range设置1-10实参传递到num函数中的行参x中,使其进行自动判定,第3步:判定成功后将返回值返回到map中,生成一个迭代器。如果直接进行打印的话,打印出来的是一个被迭代的地址,而不是我们想要看的元素,所以我们需要将迭代器里面的元素用任意一种方式迭代取出。

  在这里我用的tuple(元组),同时我们还可以list(列表)/set(集合)/next(单个读取)\\for循环依次遍历迭代。

  其实大家可以简单的去认为num这个函数就是一个加工厂,将我们送过去的商品进行加工,加工好后再将这个商品封装好送回来,这个时候我们得到了这个返回的箱子,我们需要用一种工具将这个箱子打开,把里面的东西拿出来展示给我们看。

  所以得出的结果应该是:

  (0, None, 2, None, 4, None, 6, None, 8, None)

  因为map是返回所有的可迭代对象,所不管是我们函数中判定成立或不成立的值都会被返回。(成立的就会返回达到条件的值,不成立的就返回None)

 

filter函数

  filter函数的用法基本上和map相同,但是这个函数所返回的可迭代对象是经过筛选的,filter本身是一个筛选的函数,这个函数只会返回为条件为True的可迭代对象,而为False的对象会被filter直接舍弃,并不会返回到我们手中。

 

 

sorted函数

  sorted函数是一个排序函数,他是在原来的列表上进行取值,同时生成一个新的对象排序,但是sorted和sort不同的是sorted可以设定指定一种方式去排序,代码如下:

 

def a():   

    L=[]

    while True:

        n=input("请输入字符串")

        if not n:

            break

        L.append(n)

    return L

s=a()

p=sorted(s,key=len)

print(p)

 

  使用sorted这个函数使其根据字符串的长度去排序,   sorted括号第一个参数填写我们需要排序的值,而后面有一个key参数,而这个key参数后面输入的就是我们在排序过程中所使用的条件,判断字符串的长度要用到ken所以在输入字符串后让len去获取字符串的长度,从而排序。其他的基本和sort使用方法完全相同,在这里就不再多说了。

---恢复内容结束---

以上是关于高阶函数编程的主要内容,如果未能解决你的问题,请参考以下文章

进阶学习1:函数式编程FP——概念头等函数高阶函数常用高阶函数模拟

Python 高阶函数与函数式编程入门

js函数式编程基础:高阶函数柯理化函数合成Loadash

python函数式编程之高阶函数学习

高阶函数和装饰器

函数式编程和高阶函数