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 相关文章推荐
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
跟老齐学Python之用Python计算
Sep 12 Python
在Python中封装GObject模块进行图形化程序编程的教程
Apr 14 Python
Python使用numpy实现BP神经网络
Mar 10 Python
Django 实现前端图片压缩功能的方法
Aug 07 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
python三引号如何输入
Jul 06 Python
Python学习工具jupyter notebook安装及用法解析
Oct 23 Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 Python
Python中requests做接口测试的方法
May 30 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
PHP获取网站域名和地址的代码
2008/08/17 PHP
php MYSQL 数据备份类
2009/06/19 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
JavaScript类和继承 prototype属性
2010/09/03 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
HTML5学习笔记之html5与传统html区别
2016/01/06 HTML / CSS
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
期末自我鉴定
2014/02/02 职场文书
初中同学聚会感言
2014/02/11 职场文书
应届毕业生自荐信
2015/03/04 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL