map/reduce+lambda让程序简单化
map()函数
map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回。
也就是 map(f,[x,x,x,x]) 那么f是一个函数,[x,x,x,x]是一个序列,那么map完成的操作是将序列里面的每一个元素x传入到函数f中去执行,将每个元素执行的结果返回为新的序列 Iterator(惰性序列)
由于Iterator是惰性序列,因此如果要将结果以序列方式显示出来,那么一般在前面加 list 以列表的形式显示出来。
举例说明,比如我们有一个函数f(x)=x^2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]
上,就可以用map()
实现如下:
def f(x):
return x*x
r=map(f,[1,2,3,4,5,6,7,8,9])
list(r)
运行结果:[1, 4, 9, 16, 25, 36, 49, 64, 81]
reduce函数
reduce
把一个函数作用在一个序列[x1, x2, x3, ...]
上,这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算。
效果为:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
例如:把序列[1, 3, 5, 7, 9]
变换成整数13579
from functools import reduce
def fn(x, y):
return x * 10 + y reduce(fn, [1, 3, 5, 7, 9]) 运行结果:13579
lambda函数
lambda可一行实现定义一个函数
lambda 自变量:完成的功能表达式
例如 lambda x,y:x+y 及定义了一个两参数求和的函数
map/reduce+lambda的简化
最开始的利用map函数对一个列表的元素求平方的代码就可以改成:
list(map(lambda x:x*x,[1,2,3,4,5,6,7,8,9]))
结果相同,简化了代码
后面利用reduce将序列[1,3,5,7,9]变成整数13579的代码可以简化为:
from functools import reduce
reduce(lambda x,y:x*10+y,[1,3,5,7,9])
自身觉得map+lambda的结构配合要经常使用,以后会派上用场的。
map/reduce+lambda让程序简单化的更多相关文章
- filter,map,reduce,lambda(python3)
1.filter filter(function,sequence) 对sequence中的item依次执行function(item),将执行的结果为True(符合函数判断)的item组成一个lis ...
- Python2.7学习笔记-定义函数、filter/map/reduce/lambda
我把写的代码直接贴在下面了,注释的不是很仔细,主要是为了自己复习时方便查找,并不适合没有接触过python的人看,其实我也是初学者. #定义函数 def my_abs(x): if x>=0: ...
- 【python深入】map/reduce/lambda 内置函数的使用
python中的内置函数里面,有map和reduce两个方法,这两个方法可以非常好的去做一些事情,但是之前都没有用过,下面是关于这两个方法的介绍: 一.map相关 map()会根据提供的函数对指定的序 ...
- Python中特殊函数和表达式 filter,map,reduce,lambda
1. filter 官方解释:filter(function or None, sequence) -> list, tuple, or string Return those items of ...
- Python中 filter | map | reduce | lambda的用法
1.filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tupl ...
- python: filter, map, reduce, lambda
filter built-in function filter(f,sequence) filter can apply the function f to each element of seque ...
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- Python基础灬高阶函数(lambda,filter,map,reduce,zip)
高阶函数 lambda函数 关键字lambda表示匿名函数,当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. lambda函数省略函数名,冒号前为参数,冒号后函数体. # ...
- Python: lambda, map, reduce, filter
在学习python的过程中,lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda? 下面就上面的问题进行一下解答. 1.lambda是什么? ...
随机推荐
- 《C/C++实现Console下的加载进度条模拟[美观版]》
前言 有时候我们会遇到在CMD或DOS控制台上出现的加载进度条,虽然不是如网页和软件写的美观.但确确实实也有着自己的特色.而且,一个好看的加载进度条也能增加用户使用控制台程序的体验!所以,拿来研究 ...
- TomCat控制台中文乱码及IDEA设置为UTF-8
一.解决IDEA中的中文乱码 1.首先设置idea编辑器的编码: File-Setting设置如下 idea显示编码:windows默认用gbk所以idea显示默认为gbk编码,在 Help--Edi ...
- 向C++之父Bjarne Stroustrup致敬
2013-04-25 21:30 (分类:社会人生) 非常好的文章 C ++ 的 背 影 ——C++之父Bjarne Strou ...
- Jenkins自动化构建vue项目然后发布到远程Linux服务器
部署Jenkins参照另一篇博客: centos7安装Jenkins及其卸载 一.jenkins相关插件的安装 1.安装Publish Over SSH插件用于SSH连接远程的服务器. 登录 jenk ...
- String实例 (练习)
练习题1:用户输入一段字符串,要求统计出在该段字符串中,数字,字母以及其他字符各出现过几次??? 代码实现: 运行结果: 补充:1. 连接符的使用: +用作连接符时,只能连接字符串,即“ ”双 ...
- OpenCV4系列之图像梯度和边缘检测
在图像处理中,求解图像梯度是常用操作. Sobel算子 Calculates the first, second, third, or mixed image derivatives using an ...
- Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片
场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...
- Django3的安装以及web项目的创建
cmd 直接输入:pip install -i https://pypi.douban.com/simple django 2.检测是否安装成功:用到的命令:import django ,检测版本 ...
- Jenkins集成jacoco收集单元测试覆盖率
Jenkins集成jacoco收集单元测试覆盖率 2020-02-28 目录 0 整体思路1 Jenkins创建JacocoIntegrateTestDemo项目2 配置源码管理3 配置Build4 ...
- PHPJN0001:phpmyadmin 允许密码为空 设置
phpmyadmin连接mysql数据库,出于安全考虑,默认不允许使用空密码连接数据库.因为数据库一般都设置密码访问. 但如果只是本机环境测试使用,每隔一段时间都需要填写密码,不是很方便. 如果没有修 ...