首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【原创佳作】介绍Pandas实战中一些高端玩法
2
pandas 如何实现 excel 中的汇总行?
3
pandas多级索引的骚操作!
4
40000字 Matplotlib 实操干货,真的全!
5
利用Python搞定女朋友的小情绪~
6
Python 绘制惊艳的瀑布图
7
6种方式创建多层索引
8
Python 进阶指南(编程轻松进阶):三、使用 Black 工具来格式化代码
9
数据科学 IPython 笔记本 9.6 聚合:最小、最大和之间的任何东西
10
精通 Pandas 探索性分析:1~4 全
11
高手系列!数据科学家私藏pandas高阶用法大全 ⛵
12
总结了67个pandas函数,完美解决数据处理,拿来即用!
13
PyAutoGUI,一个Python办公自动化利器!
14
解放双手|利用 PyAutoGUI 快速构建自动化操作脚本
15
Python中内置数据库!SQLite使用指南! ⛵
16
数据分析索引总结(中)Pandas多级索引
17
数据分析索引总结(下)Pandas索引技巧
18
数据分析索引总结(上)Pandas单级索引
19
网友需求系列01-Python-matplotlib定制化刻度(主副)绘制
20
用Python自动生成数据分析报告
21
手把手教你用Python操纵Word自动编写离职报告
22
pandas transform 数据转换的 4 个常用技巧!
23
30段极简Python代码:这些小技巧你都Get了么
24
数据处理遇到麻烦不要慌,5个优雅的Numpy函数助你走出困境
25
数据分析最有用的Top 50 Matplotlib图(带有完整的Python代码)(上)
26
数据分析最有用的Top 50 Matplotlib图(带有完整的Python代码)(下)
27
数据分析之Pandas变形操作总结
28
数据分析之Pandas缺失数据处理
29
数据分析之Pandas合并操作总结
30
数据分析之Pandas分组操作总结
31
学习用Pandas处理分类数据!
32
如何用Pandas处理文本数据?
33
Pandas处理时序数据(初学者必会)!
34
Python高阶函数使用总结!
35
机器学习在金融风控的经验总结!
36
你知道怎么用Pandas绘制带交互的可视化图表吗?
37
6个提升效率的pandas小技巧
38
Python数据分析库pandas高级接口dt和str的使用
39
pandas 拼接 concat 5 个常用技巧!
40
pandas分组8个常用技巧!
41
pandas 文本处理大全
42
pandas 筛选数据的 8 个骚操作
43
pandas 分类数据处理大全(附代码)
44
68 个Python内置函数,你用过几个?
45
太秀了!用 pandas 搞定 24 张 Excel 报表
46
用 Python 的 Template 类生成文件报告
47
码如其人,同学你能写一手漂亮的Python函数吗
48
Python处理图片九宫格,炫酷朋友圈
49
Python排序傻傻分不清?一文看透sorted与sort用法
50
python-docx操作word文件(
清单首页python文章详情

Python高阶函数使用总结!

作者:皮钱超,厦门大学,Datawhale原创作者

本文约2000字,建议阅读6分钟

审稿人:耿远昊,Datawhale成员,华东师范大学,开源教程《Joyful-Pandas》核心贡献者。

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

  • map
  • reduce
  • filter
  • sorted/sort
  • zip

一、map

1.1 语法

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

  • Python2 中直接返回的是一个列表
  • Python3 中返回的是一个可迭代器,如果想返回列表,可以使用list()进行处理
代码语言:javascript
复制
help(map)  # 查看帮助信息

1.2 demo

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

  1. 使用Python内置函数
  1. 使用自定义函数
  1. 使用匿名函数lambda

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

二、reduce

2.1 语法

reduce函数的定义:

代码语言:javascript
复制
reduce(function, sequence [, initial] ) -> value

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

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

2.2 使用

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

代码语言:javascript
复制
from functools import reduce   # 导入
代码语言:javascript
复制
help(reduce)  # 查看帮助文档

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

2.3 demo

  1. 使用自定义函数
  1. 使用匿名函数lambda

image-20201024185550970

  1. 一个复杂的例子

具体过程为:

代码语言:javascript
复制
1. 1*2+1=3
2. 3*3+1=10  # 第一个3为上面的结果3,第2个原始数据中的3
3. 10*4+1=41
  1. 带有初始值的例子

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

代码语言:javascript
复制
# 具体过程解释为

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()语法如下:

代码语言:javascript
复制
filter(function, iterable)  # 前者为函数,后者为待执行的序列

3.2 demo

代码语言:javascript
复制
help(filter)  # 帮助文档
  1. 使用自定义函数

返回10以内的偶数

  1. 使用匿名函数lambda
  1. 对字符串的筛选

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

四、sorted

4.1 语法

代码语言:javascript
复制
sorted(iterable, key=None, reverse=False)

4.2 3个参数

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

  • 可迭代对象iterable
  • reverse=False,接受一个布尔值,选择是否反转排序结果,默认是False
  • 接受一个回调函数key=None,回调函数只能有一个参数,根据函数的返回值进行排序

4.3 demo

代码语言:javascript
复制
help(sorted)  # 帮助文档
  1. 默认不反转
  1. 对元组、range对象、字典的排序

4.4 结果反转

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

4.5 理解key

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

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

4.6 对比sort()

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

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

五、zip

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

5.1 语法

代码语言:javascript
复制
zip([iterable,...])  # iterable是一个或者多个可迭代器
  • 函数执行的结果在Python3中返回的是一个zip对象,如果需要展示成列表的形式,直接使用list方法展开;展开的结果是列表中嵌套元组的形式
  • 在Python2中直接返回的是元组列表形式
代码语言:javascript
复制
help(zip)  # 查看文档

5.2 zip接受一个序列

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

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

5.3 zip接受多个序列

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

5.4 处理长度不同

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

5.5 zip(*iterables)

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

5.6 复杂例子

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

这个例子的解释为:

  1. [x]是一个列表中含有列表,x本身就是一个列表
  2. [x]*3结果为[x,x,x],实际上也是[[4,5,6],[4,5,6],[4,5,6]]
  3. [*[x]*3]的结果则为[(4,4,4),(5,5,5),(6,6,6)]

5.7 zip运用

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

  1. 列表求和
  1. 数据合并
  1. 字典的key-value转换

for循环实现:

使用zip实现:

下一篇
举报
领券