描述

本文结合各种实际的例子详细讲解了Python5个内建高阶函数的使用,能够帮助理解Python的数据结构和提高数据处理的效率,这5个函数分别是:

map

reduce

filter

sorted/sort

zip

一、map

1.1 语法

map函数的基本语法是map(func, seq),其含义指的是:对后面可迭代序列中的每个元素执行前面的函数func的功能,最终获取到一个新的序列。注意:

Python2 中直接返回的是一个列表

Python3 中返回的是一个可迭代器,如果想返回列表,可以使用list()进行处理

help(map) # 查看帮助信息

1.2 demo

通过举例说明map函数的使用方法

使用Python内置函数

使用自定义函数

使用匿名函数lambda

使用匿名函数的时候可以有多个参数

二、reduce

2.1 语法

reduce函数的定义:

reduce(function, sequence [, initial] ) -> value

reduce依次从sequence中取一个元素,和上一次调用function的结果做参数,再次调用function。

第一次调用function时,如果提供initial参数,会以sequence中的第一个元素和initial作为参数调用function,否则会以序列sequence的第一个数

2.2 使用

Python3中已将reduce函数移到functools模块中,需要先进行导入:

from functools import reduce # 导入help(reduce) # 查看帮助文档

上面的例子我们通过一个图形来解释说明:

2.3 demo

使用自定义函数

使用匿名函数lambda

image-20201024185550970

一个复杂的例子

具体过程为:

1.1*2+1=3 2.3*3+1=10# 第一个3为上面的结果3,第2个原始数据中的3 3.10*4+1=41

带有初始值的例子

初始化值和序列中的第一个值执行func函数,将得到的结果作为下次的起始值

# 具体过程解释为 1.6+1=7 2.7+2=9 3.9+3=12 4.12+4=16 5.16+5=21

三、filter

3.1 语法

filter()函数用于过滤序列,过滤掉不符合条件的那些元素,返回符合条件的元素组成新列表。

序列中的每个元素作为参数传递给函数进行判断,返回True或者False,最后将返回True的元素放到新列表中。

filter()语法如下:

filter(function, iterable) # 前者为函数,后者为待执行的序列

3.2 demo

help(filter) # 帮助文档

使用自定义函数

返回10以内的偶数

使用匿名函数lambda

对字符串的筛选

选择符合指定要求的字符串

四、sorted

4.1 语法

sorted(iterable, key=None, reverse=False)

4.2 3个参数

sorted()接受3个参数,返回的是一个排序后的列表

可迭代对象iterable

reverse=False,接受一个布尔值,选择是否反转排序结果,默认是False

接受一个回调函数key=None,回调函数只能有一个参数,根据函数的返回值进行排序

4.3 demo

help(sorted) # 帮助文档

默认不反转

对元组、range对象、字典的排序

4.4 结果反转

结果反转的意义就是将结果降序排列,因为原本默认是升序的,使用的是reverse=True

4.5 理解key

key参数的作用是我们自定义一个函数,然后通过将序列中的元素作用于函数之后再进行排序

在这里我们使用绝对值函数

4.6 对比sort()

sort()方法只能对原列表list进行排序,参数和sorted是相同的

结果是将原来的列表直接原地修改,而sorted 是生成新的列表,二者是不同的

五、zip

zip()是Python中一个非常重要的方法,能够快速的实现很多功能。

5.1 语法

zip([iterable,...]) # iterable是一个或者多个可迭代器

函数执行的结果在Python3中返回的是一个zip对象,如果需要展示成列表的形式,直接使用list方法展开;展开的结果是列表中嵌套元组的形式

在Python2中直接返回的是元组列表形式

help(zip) # 查看文档

5.2 zip接受一个序列

zip中可以接受列表、元组、字符串等形式

zip接受空列表的形式,返回的仍空列表

5.3 zip接受多个序列

同时对不同类型的序列进行合并

5.4 处理长度不同

当多个序列同时存在,取长度最小的那个序列的长度

5.5 zip(*iterables)

我们一般认为该方法是zip的反过程,是一个unzip的过程,举例说明其使用:

5.6 复杂例子

下面看一个更为复杂的例子

这个例子的解释为:

[x]是一个列表中含有列表,x本身就是一个列表

[x]*3结果为[x,x,x],实际上也是[[4,5,6],[4,5,6],[4,5,6]]

[*[x]*3]的结果则为[(4,4,4),(5,5,5),(6,6,6)]

5.7 zip运用

下面通过zip的实际例子来说明它的应用:

列表求和

数据合并

字典的key-value转换

for循环实现:

使用zip实现:

责任编辑:lq

打开APP精彩内容

点击阅读全文

列举5个python内置函数_Python5个内建高阶函数的使用相关推荐

  1. python (第八章)补充-可迭代对象(补充高阶函数,以及常用的高阶函数)

    文章目录 可迭代对象 迭代器 什么是迭代器 什么是生成器 生成器的作用 生成器的注意事项 总结: 高阶函数 什么是高阶函数? map()函数 filter()函数 reduce()函数 参考 可迭代对 ...

  2. 函数式编程 -- 函数是一等公民、高阶函数、闭包

    文章内容输出来源:拉勾教育 大前端高薪训练营 前言 学习函数式编程,首先要了解函数式编程相关的概念. 一.函数是一等公民 1. 一等公民的定义 根据维基百科,编程语言中一等公民的概念是由英国计算机学家 ...

  3. export function函数传参_04 js高阶函数(惰性函数、柯里化函数、compose函数)和单例设计模式...

    高阶函数的定义 在<javascript设计模式和开发实践>中是这样定义的. 函数可以作为参数被传递: 函数可以作为返回值输出. 结合这两个特点,首先想到的肯定是回调函数,回调函数也是高阶 ...

  4. python3_函数_形参调用方式 / 不定长参数 / 函数返回值 / 变量作用域 / 匿名函数 / 递归调用 / 函数式编程 / 高阶函数 / gobal和nonlocal关键字 / 内置函数

    1.形参的调用方式 1. 位置参数调用 2. 关键词参数调用 原则: 关键词参数调用不能写在位置参数调用的前边 def test1(name, age):print("name:" ...

  5. 廖雪峰讲python高阶函数求导公式_高阶函数 - 廖雪峰 Python 2.7 中文教程

    高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数abs()为例,调用该函数用以下 ...

  6. python变量作用域图解_python笔记--作用域、高阶函数、闭包

    作用域 python中被赋值的变量的位置不同,限制了能访问到变量的范围也不同,换句话说就是"变量的作用域是由其在代码中的位置所决定的". 1.LEGB规则 L(local):局部作 ...

  7. python中高阶函数和装饰器_Python高阶函数与装饰器函数的深入讲解

    本文主要介绍的是Python高阶函数与装饰器函数的相关内容,分享给大家,下面话不多说了,来一起看看详细的介绍吧 高阶函数 1.可以使用函数对象作为参数的函数 2.或可以将函数作为返回值的函数 3.函数 ...

  8. c++绝对值函数_Python自带自定义高阶函数实战

    一.概述 高阶函数,就是一个函数可以接收另一个函数作为参数的函数,或者接受一个或多个函数作为输入并输出一个函数的函数.scala与之类似. 二.自带常用高阶函数 1.map #map(f, Itera ...

  9. android kotlin 高阶函数,(三)Kotlin 高阶函数

    温馨提示 写博客是为了记录在开发过程中所涉及到的技术以及遇到的问题的解决,如果该博客对您有所帮助,希望可以点个关注/喜欢:如果您对文章中的内容有什么不同的见解,欢迎留言进行讨论.谢谢! 一.基本概念 ...

最新文章

  1. Talk is cheap, show me the code - 用 github 数据辅助你完善简历
  2. 【uva11994】Happy Painting!【LCT】
  3. 2011.12.15 linux基本命令
  4. Mustache 中的html转义问题处理
  5. python神经网络教程16_Python深度学习之神经网络视频
  6. 报名已近500人丨基于AWR/ASH故障分析案例分享
  7. Hadoop 序列化
  8. 隐藏画质代码_和平精英120帧率代码是什么?隐藏的120帧率代码更改方法技巧
  9. 吉哥系列故事——完美队形II(hdu4513+Manacher)
  10. Linux chapter 2
  11. jsp中的九大内置对象和四大作用域
  12. PHP动态网页设计与制作案例教程pdf
  13. M1 macbook安装jdk
  14. phpstudy下载、安装、配置、网站部署、卸载
  15. 七夕前夜,地球和月亮搭起“鹊桥”
  16. 牛客寒假算法基础集训营1
  17. 入手评测 华硕灵耀Pro16和联想YOGA 16s哪个好
  18. Linux系统和Windows系统的区别
  19. 数影周报:IAM巨头Okta源代码泄露,江淮拟17.04亿元“深绑”蔚来
  20. java计算机毕业设计会展中心招商服务平台MyBatis+系统+LW文档+源码+调试部署

热门文章

  1. BigMemory系列文章--2.Ehcache快速接入
  2. jQuery reset
  3. Ubuntu 12.04 下安装 VirtualBox 及虚拟机winxp的安装
  4. JavaScript中的load事件的作用_史上最全的web前端面试题汇总及答案JavaScript之二(二)...
  5. java resultset wasnull_Java Spring – RowMapper ResultSet – 整数/空值
  6. java+jvm+log_java9 gc log参数迁移
  7. 公司用--页面表单提交用的key是拼接的,保存时action的写法,struts1
  8. Linux启动屏幕打印日志,linux启动时如何在屏幕上找到文本显示?这...
  9. java 取得textfield_怎样获取java中textfield的内容
  10. sql 纵向求和_sql列统计求和