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)的形式
示例
通过嵌套函数可以把函数转换成柯里化函数
- 利用Actor实现管道过滤器模式
- SpringBoot整合Quartz定时任务 的简单实例
- 从机器学习学python(一) ——numpy中的shape、tile、argsort
- 剖析响应式编程的本质
- 从机器学习学python(二) ——iteritems、itemgetter、sorted、sort
- 基于MVC理解React+Redux
- JavaScript的IIFE(即时执行方法)
- 从机器学习学python(三) ——数组冒号取值与extend
- 从机器学习学python(四) ——numpy矩阵基础
- 从map函数引发的讨论
- AngularJs中,如何在render完成之后,执行Js脚本
- PHP取得上周一、上周日,下周一
- 代码诊所
- 《编程之美》读书笔记(一)——中国象棋将帅有效位置
- 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 数组属性和方法
- Latex公式编辑和子公式编辑
- nginx rewrite 跨域
- Oracle删除索引规范
- mysql中走与不走索引的情况汇集(待全量实验)
- C#标准事件流
- 【STM32F407开发板用户手册】第25章 STM32F407的TIM定时器基础知识和HAL库API
- 【STM32F429开发板用户手册】第25章 STM32F429的TIM定时器基础知识和HAL库API
- AkShare-债券数据-全球债券行情
- AkShare-指数数据-全球指数
- AkShare-股票数据-机构推荐
- AkShare-债券数据-可转债
- AkShare-股票数据-基金持股
- AkShare-股票数据-股票更名
- AkShare-股票数据-终止和暂停上市股票
- AkShare-股票数据-股票列表