什么是高阶函数?
高阶函数是一种将函数作为参数,或者把函数作为结果返回的函数,map函数、函数就是高阶函数的典型例子。map函数在小编以前的文章中做过相应的知识分享。函数是的内置函数,它的可选参数key用于提供一个函数,它可以将函数应用到各个元素上进行排序。
根据单词长度,使用函数对一个列表进行排序。其中将len函数传给key参数,具体示例如下:
这里需要特别提示一下,任何单参数函数都能作为key参数的值。
在函数式编程中,大家最熟悉的高阶函数主要有map函数、函数、函数和apply函数。
中移除了apply。如果想使用不定量的参数调用函数,可以使用fn(*args,**),不用再使用apply(fn,args,)。
虽然map函数、函数、函数还能使用,但是很多场景下其都有替代品可以使用。
map、、的替代品
函数式编程语言一般都会提供map、、三个高阶函数。中前两个是内置函数,但是因为其引入了列表推导和生成器表达式,它们也就变得没有那么重要了,因为其具有了可替代性。接下来,我们一起来看一下,如何使用列表推导和生成器表达式替代map、函数。
1.使用列表推导替代map和函数
代码:
In [1]:def factorial(n):
return 1 if n < 2 else n * factorial(n-1)
In [2]:fact=factorial
#使用列表推导替代map
In [3]: list(map(fact,range(6)))
Out[3]: [1, 1, 2, 6, 24, 120]
In [4]: [fact(n) for n in range(6)]
Out[4]: [1, 1, 2, 6, 24, 120]
#使用列表推导替代map和filter函数
In [5]: list(map(factorial,filter(lambda n : n % 2,range(6))))
Out[5]: [1, 6, 120]
In [6]: [factorial(n) for n in range(6) if n % 2]
Out[6]: [1, 6, 120]
通过上述结果可知,使用列表推导替代map和函数,结果一致的情况下,让代码更易读。易读的好处是代码的可维护性更强。
所以,在学习高阶函数的时候,需要清楚什么是列表推导和生成器表达式,除此之外,还有字典推导等。小编在过往的文章中也分享来列表推导、生成器表达式和字典推导的相关知识及其对比,感兴趣的朋友可以查阅一下。
2.内置函数方法的替代品
同样,是的内置函数,被放在中的模块中。函数主要用于求和。而目前最好使用的内置求和函数是sum,其性能和可读性上有了重大提升。
sum和的主要思路是把某个操作连续应用到序列到元素上,累计之前到结果,然后把一系列的值归结成为一个值。
总结
通过上述的内容可知,在高阶函数中,map、、都有相应的替代品。因此,对其进行清楚的认识非常重要。从中也可以直到,列表推导、生成器表达式在应用方面的重要性。
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666