python基础—高阶函数
时间:2022-07-22
本文章向大家介绍python基础—高阶函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
高阶函数
First Class Object
<ul>
<li>
函数在python中是一等公民
</li>
<li>
函数也是对象,可调用的对象
</li>
<li>
函数可以作为普通变量、参数、返回值等
</li>
</ul>
</li>
<li>
高阶函数 <ul>
<li>
数学概念 y = g(f(x))
</li>
<li>
在数学和计算机科学中,高阶函数应当是至少满足下面一个条件的函数
</li>
<li>
接收一个或多个函数作为参数
</li>
<li>
输出一个函数
</li>
</ul>
</li>
通过自定义sort函数来理解什么高阶函数
排序问题
<ul>
<li>
仿照内建函数sorted,请自行实现一个sort函数(不适用内建函数),能够为列表元素排序
</li>
</ul>
</li>
<li>
思路
<ul>
<li>
内建函数sorted函数是返回一个新的列表,可以设置升序或降序,可以设置一个排序的函数,自定义的sort函数也要实现这个功能
</li>
<li>
新建一个列表,遍历原列表,和新列表的值依次比较决定如何插入到新列表中
</li>
</ul>
</li>
下面是实现过程: 第一步,先实现基础功能,后续再分步优化
第二步,使用参数控制顺序
我们先来看看这里不用参数如何反转顺序排列
这里在代码块里设置了一个flag,并且用三元表达式来表示x和y的关系
第三步,我们进一步优化
这里我们传了一个参数,用来控制x和y的关系,且该实参是一个函数,用的是lambda函数,这里的lambda接收两个参数,最后返回的是布尔值,如果a>b成立返回True,否则返回False,
对应代码块中的fn(x,y)
现在我们来了解下内建函数—高阶函数
- sorted(iterable,key,reverse) 排序
- 返回一个新的列表,对一个可迭代对象的所有元素排序,排序规则为key定义的函数,reverse表示是否排序反转
- 返回新的列表
结合lambda函数,可以对字典里的value进行排序
- filter(function,iterable) 过滤数据
- 过滤可迭代对象的元素,返回一个迭代器
- function一个具有一个参数的函数,返回bool
- map(function,*iterable) 映射
- 对多个可迭代对象的元素按照指定的函数进行映射,返回一个迭代器
柯里化
- 指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程,新的函数返回一个以原有第二个参数为参数的函数
- z=f(x,y)转换成z=f(x)(y)的形式
示例
通过嵌套函数可以把函数转换成柯里化函数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 撸了个多线程断点续传下载器,我从中学习到了这些知识
- 使用 IOC 控制反转和 DI 依赖注入的意义
- Servlet配置初始值,并获取初始值
- CSS 技巧一则 -- 不定宽溢出文本适配滚动
- 潘石屹用Python解决100个问题 | 最大公约数
- 我的天上传文件又出现问题了(超出大小限制)
- 现在学 PHP 没有发展?来看看这个后台框架你还会这么想吗
- leetcode-easy-array-最大子序和
- Leecode No.3 无重复字符的最长子串
- Solidity 0.6.11 更新
- 潘石屹用Python解决100个问题 | 最小公倍数
- 通过CREATE2获得合约地址:解决交易所充值账号问题
- 小知识:如何判定crontab任务的执行频度
- 以太坊合约静态分析工具Slither简介与使用
- Cesium第一次搭建环境出不来地球的问题