高阶函数编程

张荆明 张荆明     2022-11-07     297

关键词:

 

高阶函数编程:

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

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

  高阶函数 有三种使用方式: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使用方法完全相同,在这里就不再多说了。

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

函数式编程基础---高阶函数和偏函数

一、高阶函数  所谓高阶函数是指可一把函数作为参数,或者是可以将函数作为返回值的函数(我们见得闭包函数就是高阶函数)。functionfoo(x){returnfunction(){returnx;}}  对于程序的编写,高阶函数比普通函数要灵活的多,除了... 查看详情

11.高阶函数(匿名/*递归/函数式)对象编程基础

高阶函数匿名函数匿名函数存在的情况:内置函数函数式编程递归函数式编程面向对象的程序设计类:实例:OOP类的名称空间/对象的名称空间高阶函数匿名函数lambdax:x+y#returnx+y定义标志/参数(形式类似函数传参)/跟表达式(返... 查看详情

函数式编程和高阶函数

函数式编程函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设... 查看详情

kotlin函数式编程①(函数式编程简介|高阶函数|函数类别|transform变换函数|过滤函数|合并函数|map变换函数|flatmap变换函数)(代码片段)

文章目录一、函数式编程简介1、编程范式2、高阶函数3、函数式编程4、前端开发技术二、函数类别三、变换函数四、map变换函数1、map函数原型分析2、map函数设计理念3、代码示例五、flatMap变换函数1、flatMap函数原型分析2、代码... 查看详情

前端学习之函数式编程—高阶函数(代码片段)

 什么是高阶函数(Higher-orderfunction)    可以把函数作为参数传递给另一个函数    可以把函数作为另一个函数的返回结果Part1可以把函数作为参数传递给另一个函数实现forEach函数//高阶函数-函数作为参数functionforEach(array,fn)for(... 查看详情

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

...的。函数式编程的常见应用场景ES6中的map、filter、some等高阶 查看详情

函数式编程

...hon下的函数式编程  函数式编程允许有变量;支持高阶函数(函数可以作为变量传入);支持闭包(可以返回函数);有限度地支持匿名函数高阶函数1.定义:能够接收函数作为参数的函数就是高阶函数,下面举个例子好... 查看详情

函数式编程--高阶函数--sorted

...list进行排序L=[3,7,-11,10,6]print(sorted(L))sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。例如按绝对值大小排序:#接受... 查看详情

python函数式编程以及高阶函数(代码片段)

文章目录一、什么是函数式编程二、高阶函数的概念1.map和reduce函数2.filter函数3.sorted函数此文章参考廖雪峰大神的官网,地址:函数式编程-廖雪峰的官方网站(liaoxuefeng.com)一、什么是函数式编程首先要知道的是,函数... 查看详情

js高阶函数filterreducemap(代码片段)

//编程范式:命令式编程/声明式编程//编程范式:面向对象编程(第一公民:对象)/函数式编程(第一公民:函数)//filter/map/reduce//filter中的回调函数有一个要求:必须返回一个boolean值//true:当返回true时,函数内部会自动将这次回调的n加入到... 查看详情

python高阶函数式编程

fromfunctoolsimportreducedefstr2int(s):deffn(x,y):returnx*10+ydefchar2num(s):return‘0‘:0,‘1‘:1,‘2‘:2,‘3‘:3,‘4‘:4,‘5‘:5,‘6‘:6,‘7‘:7,‘8‘:8,‘9‘:9[s]returnreduce(fn,map(char2num,s))我觉得这个函数写得很好,感觉很新颖;所以, 查看详情

scala函数式编程初步(高阶函数)(代码片段)

参数式函数定义一个参数是函数的函数。(完整定义=>匿名函数)objecthelloWorlddefmain(args:Array[String]):Unit=defaddxy(x:Int,y:Int):Int=x+ydefmulxy(x:Int,y:Int):Int=x*ydeffunc1(a:Int,b:Int,f:(Int,Int)=> 查看详情

函数式编程—高阶函数(代码片段)

...后将多个函数组合一起,便是简单的函数式编程范式二、高阶函数变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数map()函数接收两个参数,一个是函数,一... 查看详情

函数式编程的类型转换

1、基础类型转换为高阶类型(monad),以便使用函数式编程的特性:map、reduce,pipeline、业务组织、异步编程等;2、高阶类型转化为基础类型:以便使用基础类型的态射(计算)功能。3、高阶类型的内部转换(泛型类型转换)--... 查看详情

13.函数式编程:匿名函数高阶函数装饰器(代码片段)

#defadd(x,y):#returnx+y#print(add(1,2))#3#匿名函数#lambda表达式#f=lambdax,y:x+y#print(f(1,2))##三元表达式#x=2#y=1#r=xifx>yelsey#print(r)#2 #map#list_x=[1,2,3,4,5,6,7,8]#defsquare(x):#returnx*x#方法1#forxinl 查看详情

day-6:函数式编程

...数本身作为参数传入另一个函数,还允许返回一个函数!高阶函数  高阶函数就是将函数的变量名作为参数传入,内部再对该函数进行调用的函数。  一个简单的高阶函数如下:defadd(x,y,f):returnf(x)+f(y)x==>-5y==>6f==>absf(x)... 查看详情

kotlin小知识之高阶函数(代码片段)

文章目录高阶函数定义高阶函数函数类型高阶函数示例内联函数内联函数的作用内联函数的用法noinline与crossinline高阶函数定义高阶函数高阶函数和Lambda的关系是密不可分的.像接受Lambda参数的函数就可以称为具有函数式编程风格... 查看详情

浅析javascript高阶函数

  什么是高阶函数:在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:1、接受一个或多个函数作为输入;2、输出一个函数。在数学中它们也叫做算子(运算符)或泛函。微积分中的导数就是常见的例子,因... 查看详情