Python map和reduce函数用法示例
作者:junjie 时间:2022-06-21 09:02:25
先看map。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
举例说明,比如我们有一个函数a(x)=x*2,要把这个函数作用在一个list [1, 2, 3, 4, 5]上,就可以用map()实现如下:
>>> def a(x):
... return x * 2
...
>>> map(a, [1,2,3,4,5])
[2, 4, 6, 8, 10]
map传入的第一个参数a,即a函数,当然你也可以不用map函数实现这功能:
>>> list = []
>>> for i in [1, 2, 3, 4, 5]:
... list.append(a(i))
...
>>> print list
[2, 4, 6, 8, 10]
从代码量上来讲,map要精简很多,所以,map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的a(x)=x*2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串:
>>> map(str,[1,2,3,4,5])
['1', '2', '3', '4', '5']
>>>
只需要一行代码,就搞定了。让我们再看和来自顾雪峰python教程的习题:利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam', ‘LISA', ‘barT'],输出:[‘Adam', ‘Lisa', ‘Bart']。作为我个人来说,我可能会先将不规范的英文名全转换在小写然后再通过capitalize()函数,将首字母转换在写,代码如下:
>>> def caps(name):
... return name.capitalize()
...
>>> def lowers(name):
... return name.lower()
...
>>> map(caps, map(lowers,['adam', 'LISA', 'barT']))
['Adam', 'Lisa', 'Bart']
再看reduce的用法。reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和:
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25
>>> reduce(add, range(1, 11))
55
>>> reduce(add, range(1, 11),20)
75
当然求和运算可以直接用Python内建函数sum(),没必要动用reduce。但是如果要把序列[1,2,3,4,5,6,7]变换成整数1234567,reduce就可以派上用场:
>>> def fn(x, y):
... return x * 10 + y
...
>>> reduce(fn, [1,3,4,5,6,7])
134567
标签:Python,map,reduce,函数,用法
0
投稿
猜你喜欢
Mysql注入中的outfile、dumpfile、load_file函数详解
2024-01-21 01:30:47
Django如何批量创建Model
2022-12-29 15:40:39
Python实现基于PIL和tesseract的验证码识别功能示例
2022-10-22 23:09:54
vue实现评论列表功能
2023-07-02 17:05:29
numpy自动生成数组详解
2023-09-02 22:53:47
Python数据分析应用之Matplotlib数据可视化详情
2023-08-28 07:15:31
.NET Core读取配置文件的方法
2024-06-05 09:31:38
jquery ajax传递中文参数乱码问题及解决方法说明
2024-04-22 22:21:54
matplotlib 三维图表绘制方法简介
2023-08-06 00:06:52
Pytorch中的backward()多个loss函数用法
2023-11-12 00:19:21
asp ajax跨域提交数据
2011-04-11 10:56:00
带你了解HDFS的Namenode 高可用机制
2023-12-08 10:20:45
图标设计常犯的10种错误
2008-03-06 13:40:00
如何优化SQL语句(全)
2024-01-27 06:12:59
python 实现矩阵按对角线打印
2022-08-01 02:01:07
python-opencv在有噪音的情况下提取图像的轮廓实例
2023-01-10 08:48:36
Python代码块批量添加Tab缩进的方法
2022-10-10 16:41:39
深入了解javascript中的prototype与继承
2024-04-23 09:13:10
ASP.NET程序中用Repeater实现分页
2024-05-09 09:02:48
python源码剖析之PyObject详解
2023-08-02 14:07:03