python的map和reduce函数
map函数时python的高级内置函数
语法为:map(function, iterable, ...)
参数:
function -- 函数
iterable -- 一个或多个序列
将function作用于iterable序列中的每一个元素,并将调用的结果返回
主要是为了并行运算,非常高效
1. 一个输入参数,输入为列表
# 1. 一个参数
def map_func(x):
res = x**2
return res
a1 = map(map_func, [1,2,3]) #直接返回的是object,例如 <map object at 0x000001FEF3457438>
print(a1)
print(list(a1)) #强制转换:[1, 4, 9]
2. 一个输入参数,输入为元组
a2 = map(map_func, (1,2,3))
print(a2)
3. 两个输入参数
# 2. 两个参数
def map_func_2(x,y):
res = x+y
return res
a3 = map(map_func_2, [1,2,3],[1,2,3]) #同时从两个序列中取出相同位置的元素,进行运算;但是两个参数不同长度时会报错
print(a3)
print(list(a3)) # 输出为:[2, 4, 6]
4. 使用int等类型函数
# 4. 典型应用:int等类型函数
a4 = map(int, [1.5,2.1,3.0]) #同时从两个序列中取出相同位置的元素,进行运算;但是两个参数不同长度时会报错
print(list(a4)) #输出:[1, 2, 3] a5 = map(int, '') #将字符串元素变成整数
print(list(a5)) #输出:[1, 2, 3, 0, 6]
5. 使用lambda表达式
# 5. 使用lambda函数,x为参数,x**2属于lambda表达式的返回值
a6 = map(lambda x: x ** 2, [1, 2, 3])
print(a6)
print(list(a6)) # 输出:[1, 4, 9]
reduce函数,与map函数类似,注意在Python3中reduce不再是内置函数,而是集成到了functools中,需要:from functools import reduce
函数将一个数据集合(列表,元组等)中的所有数据进行下列操作:用传给 reduce中的函数 function(二元函数,两个参数),先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,依次进行下去直到最后。
用法:reduce(function, iterable[, initializer])
参数:
function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数
1. "减少"为一个值
from functools import reduce
def add_2(x, y):
return x+y
a7 = reduce(add_2, [1,2,3]) #得到的是一个值,依次执行add_2(1,2),对结果和3执行add_2(add_2(1,2),3),有点类似递归运算
print(a7) #输出为:6
2. lambda表达式调用
# lambda函数使用, x,y为参数,x+y为lambda表达式的返回值
a8 = reduce(lambda x, y: x+y, [1,2,3]) #得到的是一个值,先调用参数1,2,然后对结果和3继续使用
print(a8) #输出为:6
3. 减少矩阵维度
# 减少矩阵维度
import numpy as np
tmp = np.mat([[1,2,3],[4,5,6],[7,8,9]])
print(tmp)
# 输出为:
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
a9 = reduce(lambda x,y: x+y, tmp) #实际是:首先[1,2,3]+[4,5,6] = [5,7,9];然后[5,7,9] + [7,8,9] = [12,15,18]
print(a9) # 输出:[[12 15 18]],是(1,3)的矩阵
其中,还有filter函数也与此类似。
参考:
https://baijiahao.baidu.com/s?id=1594702528079035916&wfr=spider&for=pc
https://blog.csdn.net/wxjsjp/article/details/80638696
https://www.runoob.com/python/python-func-map.html
https://www.runoob.com/python/python-func-reduce.html
https://blog.csdn.net/ctan006/article/details/79657678
python的map和reduce函数的更多相关文章
- Python中map和reduce函数??
①从参数方面来讲: map()函数: map()包含两个参数,第一个是参数是一个函数,第二个是序列(列表或元组).其中,函数(即map的第一个参数位置的函数)可以接收一个或多个参数. reduce() ...
- python中map、reduce函数
map函数: 接受一个函数 f 和一个 list .格式:map( f , L),对L中的每个元素,进行f(x)的一个操作. 例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9] ...
- Python中map和reduce函数
①从参数方面来讲: map()函数: map()包含两个参数,第一个是参数是一个函数,第二个是序列(列表或元组).其中,函数(即map的第一个参数位置的函数)可以接收一个或多个参数. reduce() ...
- Python【map、reduce、filter】内置函数使用说明(转载)
转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...
- 【转】Python 中map、reduce、filter函数
转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...
- Python自学笔记-map和reduce函数(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. Python内 ...
- python Map()和reduce()函数
Map()和reduce()函数 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函 ...
- Python【map、reduce、filter】内置函数使用说明
题记 介绍下Python 中 map,reduce,和filter 内置函数的方法 一:map map(...) map(function, sequence[, sequence, ...]) -& ...
- Python map,filter,reduce函数
# -*- coding:utf-8 -*- #定义一个自己的map函数list_list = [1,2,4,8,16] def my_map(func,iterable): my_list = [] ...
随机推荐
- [整理]如何撤销远程的git提交?
确保你在你想要撤销的分支上. 第一步,本地使用 get reset --hard ,切换到特定的commit. 第二部,使用 --force推送到远程分支. git reset --hard cedc ...
- 华硕主板 Vmware虚拟机 二进制转换与此平台上的长模式不兼容
出现情况如下: 大概遇到过两次这个问题,第一次是在笔记本VM上装虚拟机,第二次是在台式机VM上装虚拟机. 原因是因为虚拟化(Intel Virtualization Technology)技术,在主板 ...
- Operation之算数&聚合操作符
toArray 该操作符先把一个序列转成一个数组, 并作为一个单一的事件发送, 然后结束 Observable.of(1,2,3,4) .toArray() .subscribe(onNext: { ...
- LwIP应用开发笔记之二:LwIP无操作系统UDP服务器
前面我们已经完成了LwIP协议栈基于逻辑的基本移植,在这一节我们将以RAW API来实现UDP服务器. 1.UDP协议简述 UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包, ...
- LODOP打印URL显示和隐藏进度条
不建议使用ADD_PRINT_URL:由于Lodop借用IE下载引擎,与非IE浏览器之间目前不能传递Session(Cookies),所以需要安全验证的页面不要用URL方式打印,要用页面已经下载好的内 ...
- Quartz学习笔记:集群部署&高可用
Quartz学习笔记:集群部署&高可用 集群部署 一个Quartz集群中的每个节点是一个独立的Quartz应用,它又管理着其他的节点.这就意味着你必须对每个节点分别启动或停止.Quartz集群 ...
- 递归下降和LL(1)语法分析
什么是自顶向下分析法 在语法分析过程中一般有两种语法分析方法,自顶向下和自底向上,递归下降分析和LL(1)都属于是自顶向下的语法分析 自顶向下分析法的过程就像从第一个非终结符作为根节点开始根据产生式进 ...
- 【ARM-Linux开发】OpenACC并行编程实战笔记
今年运气比较好,学了cuda之后,了解到了gpu的另两种使用语言opencl和openacc, opencl(Open Computing Language ,开放计算语言)是面向异构系统的并行编程 ...
- [数据结构 - 第6章] 树之链式二叉树(C语言实现)
一.什么是二叉树? 1.1 定义 二叉树,是度为二的树,二叉树的每一个节点最多只有二个子节点,且两个子节点有序. 1.2 二叉树的重要特性 (1)二叉树的第 i 层上节点数最多为 2n-1: (2)高 ...
- dva+umi+antd项目从搭建到使用
先创建一个新项目,具体步骤请参考https://www.cnblogs.com/darkbluelove/p/11338309.html 一.添加document.ejs文件(参考文档:https:/ ...