高阶函数编程
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使用方法完全相同,在这里就不再多说了。
---恢复内容结束---
以上是关于高阶函数编程的主要内容,如果未能解决你的问题,请参考以下文章