一、高阶函数的定义

高阶函数:就是把函数当成参数传递的一种函数,例如:

defadd(x,y,f):return f(x)+f(y)print(add(-8,11,abs)

结果:19

解释:

1.调用add函数,分别执行abs(-8)和abs(11),分别计算出他们的值

2.最后再做和运算

二、Python内置的几个高阶函数

1.map()函数

map()函数接收两个参数,一个是函数(function),一个是序列(sequence),map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。程序代码如下:

lt = (1,2,3,4,5)deff2(x):return x*x

ml=map(f2,lt)print(type(ml))print (ml)

结果:

解释:定义的函数f2。写f2时,指的是函数对象本身,当我们写f2(1)时,指的是调用f函数,并传入参数1,期待返回结果1。因此,map()传入的第一个参数是f2,即函数对象本身。像map()函数这种能够接收函数作为参数的函数,称之为高阶函数(Higher-order function)。

2.reduce()函数:reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

程序例子如下:

print("#############reduce################")deff(x,y):return x +yprint (reduce(f,[1, 2, 3, 4, 5],10))

结果:

3.filter()函数

Python内建的filter()函数用于过滤序列。和map类似,filter()也接收一个函数和一个序列。和map不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃。true保留,false丢弃

例子:在一个list中,删掉偶数,只保留奇数,程序代码如下:

print ("###############filter##################")

a= [1, 2, 3, 4, 5]defis_odd(x):return x%2 == 1

print (filter(is_odd,a))

结果:

4.匿名函数

没有函数名

单条语句组成

语句执行的结果就是返回值

可用作sort的key函数

例子如下:

defsum(x,y):return x+y

m= lambda x,y:x+yprint (m(4,5))

结果:9

5.sorted函数

对List、Dict进行排序,Python提供了两个方法。对给定的List L进行排序:

方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本

方法2.用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变

sorted函数的语法:

def sorted(iterable, cmp=None, key=None, reverse=False):

可以看到其中第一个参数是可迭代对象,后面的参数都是具有默认值的,重点阐述如下:

iterable:是可迭代类型;

cmp:用于比较的函数,比较什么由key决定;

key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;

reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。

返回值:是一个经过排序的可迭代类型,与iterable一样。

参数说明:

(1) cmp参数

cmp接受一个函数,拿整形举例,形式为:

deff(a,b):return a-b

如果排序的元素是其他类型的,如果a逻辑小于b,函数返回负数;a逻辑等于b,函数返回0;a逻辑大于b,函数返回正数就行了

(2) key参数

key也是接受一个函数,不同的是,这个函数只接受一个元素,形式如下

deff(a):return len(a)

key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序

(3) reverse参数

接受False 或者True 表示是否逆序

例子:对字典进行排序,程序代码如下:

print ("############对字典进行排序####################")

mm= dict(a=1,c=3,d=9,b=10,f=4)print(mm)for i inmm:printiprint ('#####################################')for j inmm.iteritems():printj

test=sorted(mm)

test=sorted(mm.iteritems(),key=lambda d:d[1])print (test)

结果:

python阶乘匿名函数_python的高阶函数与匿名函数相关推荐

  1. 一木.溪桥学Python-09:函数的返回值、函数的作用域、作用域的优先级、递归函数、内置文件中常用方法、匿名函数lambda、高阶函数

    一木.溪桥 在Logic Education跟Amy学Python 12期:Python基础课 一木.溪桥学Python-09:函数的返回值.作用域.作用域的优先级.递归函数.内置文件中常用方法.匿名 ...

  2. 一文看懂Python(八)-----内置高阶函数用法总结

    函数是Python的核心内容之一,能够提高代码的重复利用率.为了更好的使用函数,有必要了解函数的一些高级用法. Python内置了三个高阶函数:所谓高阶函数就是以函数作为参数,或者返回一个函数的函数, ...

  3. 初学者python笔记(装饰器、高阶函数、闭包)

    一个函数被定义完成后,甚至程序发布后,后期可能需要添加某些功能,但是我们不可能每次都去修改原函数的代码,这时候装饰器就可以上场了,本篇文章将会用一个个可实现的代码,由浅入深.循序渐进得阐述装饰器的强大 ...

  4. Kotlin的高阶函数和常用高阶函数

    Kotlin的高阶函数和常用高阶函数 文章来源:企鹅号 - Android先生 高阶函数的定义 将函数当做参数或者是返回值的函数 什么是高阶函数 可以看看我们常用的 函数: 首先我们可以知道, 是 的 ...

  5. 原生js循环展示dom_web前端教程:JS高阶编程技巧-惰性函数

    框架(framework)是一个框子--指其约束性,也是一个架子--指其支撑性.是一个基本概念上的结构,用于去解决或者处理复杂的问题. Web前端教程 框架这个广泛的定义使用的十分流行,尤其在软件概念 ...

  6. java 高阶函数_谈谈高阶函数给我们带来了什么。

    什么是高阶函数 一句话解释的话,就是函数可以作为参数以变量的方式持有,引用,构造和使用 一些文章我随手搜的,大家可以看看,它本身的概念并不复杂. 高阶函数-廖雪峰 高阶函数-wiki 其实现在主流语言 ...

  7. python中高阶函数改写学生信息管理程序_python利用高阶函数实现剪枝函数

    本文为大家分享了python利用高阶函数实现剪枝函数的具体代码,供大家参考,具体内容如下 案例: 某些时候,我们想要为多个函数,添加某种功能,比如计时统计,记录日志,缓存运算结果等等 需求: 在每个函 ...

  8. Python 基础之匿名函数 迭代器和高阶函数

    一.匿名函数 lambda表达式 用一句话来表达只有返回值的函数,叫匿名函数特点:简洁方便语法:lambda 参数: 返回值 1.不带有参数的lambda表达式 def func():     ret ...

  9. Python学习笔记__4.1章 高阶函数

    # 这是学习廖雪峰老师python教程的学习笔记 1.概览 我们知道Python内置的求绝对值的函数是abs() # 调用abs()函数可以获得一个值 >>> abs(-10) 10 ...

最新文章

  1. Docker 从入门到精通(建议收藏的教程)
  2. ssh错误 server not ready for puppeth err=“ssh: handshake failed: ssh: unable to authenticate... 解决方法
  3. 【思维导图总结——数据库系统概论】绪论
  4. Day 26: TogetherJS —— 让我们一起来编程!
  5. BZOJ 1296 粉刷匠(分组背包套DP)
  6. H264关于RTP协议的实现
  7. 动态规划训练15 [Monkey and Banana HDU - 1069 ]
  8. 基于TableStore/MaxCompute的数据采集分析系统介绍
  9. 简单干净的C#方法设计案例:SFCUI.AjaxValue()之二
  10. vue框架开发出现页面空白、白屏的解决方法总汇
  11. html 5 video
  12. SmartPLS软件如何做有调节的中介作用模型?
  13. 正反转信号判别原理以及数字鉴相器原理
  14. LM1875功放板设计实例
  15. mc网站服务器设置家怎么圈地,我的世界怎么圈地 教你设置自己的领地
  16. 【C语言航路】第一站:初识C语言(四)
  17. Java程序设计 多线程 基础知识题
  18. Nanoprobes丨Nanogold 印迹和免疫化学技术
  19. 新浪微博开发之授权用户登录的实现
  20. 根据在同一时间使用计算机用户的多少,2016年职称计算机WindowsXP考前冲刺试题1...

热门文章

  1. 资源过于敏澸,8h删!这波福利....请笑纳。。
  2. 卧槽!竟然可以直接白嫖 Github Action 的 2C7G 服务器!
  3. Intellij IDEA 竟然把 Java8 的数据流问题这么完美的解决掉了!
  4. 针对Java开发者的持续交付完整实施指南 | 内含福利
  5. 如何使用Mybatis的拦截器实现数据加密与解密
  6. 选项类 oracle ebs,Oracle EBS工具选项:关闭其他表单修改方法
  7. mysql怎么执行任务_Mysql怎么定时执行任务
  8. error 1309 mysql_MySQ登录提示ERROR 1045 (28000)错误如何解决
  9. 最强Transformer发布!谷歌大脑提出ViT-G:缩放视觉Transformer,高达90.45%准确率!
  10. Please use new-style autograd function with static forward method