python中abs&map&reduce简介


Posted in Python onFebruary 20, 2018

abs函数

可以把函数本身赋值给变量
>>> f = abs
变量可以指向函数
>>> f = abs
>>> f(-10)
10
abs函数实际上是定义在import builtins模块中的,所以要让修改abs变量的指向在其它模块也生效,要用import builtins; builtins.abs = 10

传入函数
一个函数接收另一个函数作为参数,这种函数就称之为高阶函数。

def add(x, y, f):
return f(x) + f(y)

当我们调用add(-5, 6, abs)时,参数x,y和f分别接收-5,6和abs,根据函数定义,我们可以推导计算过程为:

x = -5
y = 6
f = abs
f(x) + f(y) ==> abs(-5) + abs(6) ==> 11

map

map()函数接收两个参数,一个是函数,一个是Iterable,
map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回

>>> 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]

map()传入的第一个参数是f,即函数对象本身
通过list()函数让它把整个序列都计算出来并返回一个list
把这个list所有数字转为字符串:

>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

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,reduce就可以派上用场:

>>> from functools import reduce
>>> def fn(x, y):
... return x * 10 + y
...
>>> reduce(fn, [1, 3, 5, 7, 9])
13579
Python 相关文章推荐
深度定制Python的Flask框架开发环境的一些技巧总结
Jul 12 Python
Python微信库:itchat的用法详解
Aug 14 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
Python global全局变量函数详解
Sep 18 Python
python3.6使用tkinter实现弹跳小球游戏
May 09 Python
Django MEDIA的配置及用法详解
Jul 25 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 Python
如何使用python传入不确定个数参数
Feb 18 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
Python time库的时间时钟处理
May 02 Python
pytorch锁死在dataloader(训练时卡死)
May 28 Python
python文件与路径操作神器 pathlib
Apr 01 Python
Python中常见的异常总结
Feb 20 #Python
Python中单例模式总结
Feb 20 #Python
ubuntu安装mysql pycharm sublime
Feb 20 #Python
python中(str,list,tuple)基础知识汇总
Feb 20 #Python
Python 反转字符串(reverse)的方法小结
Feb 20 #Python
python如何实现int函数的方法示例
Feb 19 #Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 #Python
You might like
改进的IP计数器
2006/10/09 PHP
php实现多张图片上传加水印技巧
2013/04/18 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
phalcon框架使用指南
2016/02/23 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
[29:59]完美世界DOTA2联赛PWL S3 Forest vs access 第二场 12.11
2020/12/13 DOTA
Python生成器(Generator)详解
2015/04/13 Python
python分析作业提交情况
2017/11/22 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
初三学习计划书范文
2014/04/30 职场文书
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers
python中redis包操作数据库的教程
2022/04/19 Python