【python深入】map/reduce/lambda 内置函数的使用
python中的内置函数里面,有map和reduce两个方法,这两个方法可以非常好的去做一些事情,但是之前都没有用过,下面是关于这两个方法的介绍:
一、map相关
map()会根据提供的函数对指定的序列做映射
具体用法及含义如下:

因为这是python27中,所以会直接返回一个list,如果是python3,则返回迭代器
具体参数:
(1)function参数:函数,可以包含1个或者多个参数,看sequence的个数(备注:操作的内容其实就是sequence里面的每一个元素)
(2)sequence参数:要操作的序列
下面是map的具体用法:
def char2num(s):
return {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}[s]
print map(char2num, '12345')
运行结果是:
[1, 2, 3, 4, 5]
接下来是有两个或者更多参数的情况:
def addmap(x,y,z):
return x+y*z
print map(addmap, [1,2,3], [4,5,6], [1,2,3])
运行结果是:
[5, 12, 21]
二、reduce相关
reduce()的作用是:根据提供的函数,对参数序列中的元素进行累积,比如说提供的函数是加和,则会对参数序列中的所有元素进行加和处理
具体用法及含义如下:

具体参数:
(1)function参数:包含两个参数,是用来进行累加运算的两个参数
(2)sequence参数:要进行操作的序列
下面是reduce的具体用法:
def fn(x,y):
return x*10 + y
print reduce(fn, [1,2,5,7,9])
print fn(fn(fn(fn(1,2),5),7),9)
运行结果是:
12579
12579
从上面的例子中可以看到:
reduce(fn, [1,2,5,7,9]) 其实等价于 fn(fn(fn(fn(1,2),5),7),9)
然后将map和reduce结合起来用的话,可以实现一个str2int的功能:
def str2int(s):
def fn(x,y):
return x*10 + y
def char2num(s):
return {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}[s]
return reduce(fn, map(char2num, s))
print str2int('12386')
运行结果是:
12386
后面再有这种map或者reduce的需要,可以自己实现function,然后结合使用即可
三、lambda
lambda就是匿名函数,不需要函数名,就只有一个表达式,不用写return
比如说对两个元素实现相加的操作,这个可以跟reduce结合使用:
#关于lambda的用法
print reduce(lambda x,y:x+y, ['q', 'e', 'w', 't', 'a'])
或者跟map结合使用:
print map(lambda x, y:x*x+y*y, [1,2,3,4,5], [1,2,3,4,5])
然后运行结果分别如下:
qewta
[2, 8, 18, 32, 50]
【python深入】map/reduce/lambda 内置函数的使用的更多相关文章
- python基础12_匿名_内置函数
一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...
- Python学习(八) —— 内置函数和匿名函数
一.递归函数 定义:在一个函数里调用这个函数本身 递归的最大深度:997 def func(n): print(n) n += 1 func(n) func(1) 测试递归最大深度 import sy ...
- 【python】dir(__builtins__)查看python中所用BIF(内置函数)
dir(__builtins__)查看python中所用BIF(内置函数)
- 查看python内部模块命令,内置函数,查看python已经安装的模块命令
查看python内部模块命令,内置函数,查看python已经安装的模块命令 可以用dir(modules) 或者用 pip list或者用 help('modules') 或者用 python -m ...
- python day5 lambda,内置函数,文件操作,冒泡排序以及装饰器
目录 python day 5 1. 匿名函数lambda 2. python的内置函数 3. python文件操作 4. 递归函数 5. 冒泡排序 6. 装饰器 python day 5 2019/ ...
- python补充最常见的内置函数
最常见的内置函数是: print("Hello World!") 数学运算 abs(-5) # 取绝对值,也就是5 round(2. ...
- Python基础(七)内置函数
今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数: 下面就一一介绍一下内置函数的用法: 1.abs() 返回一个数值的绝对值,可以是整数或浮点数等. 1 2 3 ...
- python全栈开发-Day13 内置函数
一.内置函数 注意:内置函数id()可以返回一个对象的身份,返回值为整数. 这个整数通常对应与该对象在内存中的位置,但这与python的具体实现有关,不应该作为对身份的定义,即不够精准,最精准的还是以 ...
- python基础之 装饰器,内置函数
1.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使用外部变量(非全局变量)叫做闭包! def wrapper(): money =10 def inner(num) ...
随机推荐
- 2018-2019-2 20165312《网络攻防技术》Exp3 免杀原理与实践
2018-2019-2 20165312<网络攻防技术>Exp3 免杀原理与实践 课上知识点总结 1.恶意软件检测机制 基于特征码的检测(需要定期更新病毒库) 启发式恶意软件检测(实时监控 ...
- 在写WebApi判断用户权限时返回数据和接受支付结果 定义返回数据类型
using ADT.Core.Encrypt; using System; using System.Collections.Generic; using System.Linq; using Sys ...
- c#字符串to/from文本文档IO示例
写入文本文档 class Program { static void Main(String[] args) { //写入string数组,每个string一行 string[] lines = { ...
- vb程序安装时需要在客户端安装MSSOAP30.dll,但注册不上,请问怎么处理
現在想打包发布,在客戶沒有這個控件時,注冊一下,主要是不想在客户机器上安装SoapToolkit30.EXE文件 ?? 推荐解决方案 如果使用 InstallShield 工具来打包,安装完MSSOA ...
- 一些常见的Java面试题 & 面试感悟
< 前言 > 近期在面试,深感这个行业的浮躁,一些菜不辣基的弱鸡开出的工资待遇要求,超过了我.不知道他们是怎么拿到那么高的工资的,难道是他在公司有亲戚朋友吗?有后台吗?是行业热钱真的过多了 ...
- HTTPS 基本流程3
前文说到了6 组key material, 12个hash 值,非常迷惑, 今天才搞明白, 原来所有这些内容就是 对称密钥的内容. 上面的图 虽然不是很清晰,但是, 其实也已经写明白了, 就是 右边的 ...
- Burpsuite Sqlmap Nmap入门总结
burpsuite sqlmap nmap 简介 sqlmap基础 五种独特sql注入技术: 基于布尔类型的盲注 基于时间的盲注 基于报错注入 联合查询注入 堆查询注入 sqlmap入门 1.判断是否 ...
- 使用 nodeJs 开发微信公众号(获取access_token)
要使用微信提供的功能接口,就需要获取到access_token,这是开发公众号必不可少的一部 access_token有效期20分钟,建议保存起来,过期后在重新获取 获取流程如下: 我将微信相关的操作 ...
- join,left join,inner join,full join的区别?
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...
- LNMP 支持路由重写
server { listen 80; #listen [::]:80; server_name www.xxx.com; index i ...