map()和reduce()是一种在处理大数据时的重要思想,在平时也可以利用。在python中内置了这两个方法,map取映射的意思,reduce取归纳的意思。

一、map()

  • map(func, lsd)

  参数1是函数
  参数2是序列

  • 功能:将传入的函数依次作用在序列中的每一个元素,并把结果作为一个新的Iterator返回。

    注:可迭代对象是个惰性的列表,直接输出为一个地址,要想输出里面内容要显示的写出来,eg:print(list(res))

  1. # 下面实例的目标是将列表中的字符转换为整形
  2.  
  3. def char2int(chr):
  4. return {'':0, '':1, '':2, '':3}[chr] # 通过字典来返回转换后的结果
  5.  
  6. lis = ['','','','']
  7. res = map(char2int, lis) # 用自己写的函数映射到每个元素上
  8. res2 = map(int, lis) # 通过内置函数来实现
  9. print(res) # 惰性列表,返回一个内存地址
  10. print(list(res)) # 强制转换成列表
  11. print(list(res2))

二、ruduce()

  • reduce(func, lsd)

  参数1是函数
  参数2是序列

  注:reduce需要引入:from functools import reduce

  • 功能:一个函数作用在序列上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素累积运算。
    • eg:  reduce(f, [a,b,c,d]) 等价于f(f(f(a,b),c),d) ----f是一个接受两个参数的函数。
  1. # 实现一个累加
  2.  
  3. from functools import reduce
  4. # 自定义的两输入加法
  5. def Sum(a,b):
  6. return a + b
  7. lis = [1,2,3,4,5]
  8.  
  9. res = reduce(Sum, lis) # 对序列中的元素类似递归的加进去
  10. print(res) # 由于reduce返回的只是一个结果,不必考虑map中提到的问题

三、综合

  map、reduce经常是配合起来使用的,下面有一个简单的例子,例子旨在介绍如何使用,无需关心是否实用。

  1. # 这段代码是想要将一段数字的字符串转换为整型
  2.  
  3. from functools import reduce # 引入reduce方法
  4.  
  5. def str2int(str):
  6. # reduce中使用的函数,将map转换后的列表中元素,生成按顺序排列的整型数字
  7. def fc(x,y):
  8. return x * 10 + y
  9. # 把字符串中每个元素转换成对应的整型数字,返回一个整型的列表
  10. def fs(chr):
  11. return {'':0, '':1, '':2, '':3,'':4, '':5, '':6, '':7, '':8, '':9}[chr]
  12. return reduce(fc, map(fs,list(str))) # 先使用map函数把每个元素转成数字,然后用reduce函数把数字拼接起来
  13. res = str2int('')
  14. print(res)

python--map()、reduce()的更多相关文章

  1. Python特殊语法:filter、map、reduce、lambda [转]

    Python特殊语法:filter.map.reduce.lambda [转] python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力! filter(function, s ...

  2. 转:Python一些特殊用法(map、reduce、filter、lambda、列表推导式等)

    Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...

  3. Python里的map、reduce、filter、lambda、列表推导式

    Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...

  4. python之lambda、filter、map、reduce的用法说明

    python中有一些非常有趣的函数,面试的时候可能会遇到.今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,m ...

  5. python中filter、map、reduce的区别

    python中有一些非常有趣的函数,今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,map,reduce为内 ...

  6. python中的zip、map、reduce 、lambda、filter函数的使用

    飞机票 lambda函数 lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lambda表达式是 ...

  7. python中的zip、map、reduce 、lambda函数的使用。

    lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lambda表达式是起到一个函数速写的作用.允 ...

  8. Python高阶函数map、reduce、filter、sorted的应用

    #-*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.support.wait import Web ...

  9. python中的filter、map、reduce、apply用法

    1. filter 功能: filter的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数. 调用: filter(function,seq ...

  10. Python函数式编程中map()、reduce()和filter()函数的用法

    Python中map().reduce()和filter()三个函数均是应用于序列的内置函数,分别对序列进行遍历.递归计算以及过滤操作.这三个内置函数在实际使用过程中常常和“行内函数”lambda函数 ...

随机推荐

  1. (后端)安装mongodb以及设置为windows服务 详细步骤(转)

    1.在data文件夹下新建一个log文件夹,用于存放日志文件,在log文件夹下新建文件mongodb.log 2.在 D:\mongodb文件夹下新建文件mongo.config,并用记事本打开mon ...

  2. canvas代替imgage,可以有效的提高大图片加载的速度!

    //加载zepto插件 <script> //定义图片的数量 var total = 17; //获取屏幕的宽度 var zWin = $(window); //定义渲染图片的方法 var ...

  3. python 画个小猪佩奇

    不知道大家小时候有没有学习过logo语言,就是操纵一只小王八,来画各种图案.博主小学微机课就学习了这个,最近发现python的turtle包就是logo语言,所以画个小猪佩奇和大家分享. 代码来自知乎 ...

  4. 第1章 HTTP协议基本介绍了解

    一.常见接口协议: HTTP     超文本传输协议 HTTPS   安全超文本传输协议 FTP       文件传输协议 TCP       网络控制协议 IP          互联网协议 UDP ...

  5. Team Services的打包管理

    Team Services的打包管理 概述 Package Management (打包管理)是一种扩展,可以更容易地发现.安装和发布包. 它与Team Services中心如构建功能深度集成,这样打 ...

  6. 爱奇艺、伤酷、乐视 vip 解析视频网站

    爱奇艺.伤酷.乐视 vip 解析视频网站 :http://www.nongshenghuo.com:805

  7. 项目初始化mysql建库和授权

    创建数据库和授权 mysql -e "create database DATABASE DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_gen ...

  8. 洗礼灵魂,修炼python(89)-- 知识拾遗篇 —— 进程

    进程 1.含义:计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位.说白了就是一个程序的执行实例. 执行一个程序就是一个进程,比如你打开浏览器看到我的博客,浏览器本身是一 ...

  9. EOS智能合约开发(二):EOS创建和管理钱包

    上节介绍了EOS智能合约开发之EOS环境搭建及启动节点 那么,节点启动后我们要做的第一件事儿是什么呢?就是我们首先要有账号,但是有账号的前提是什么呢?倒不是先创建账号,而是先要有自己的一组私钥,有了私 ...

  10. python列表与元组的用法

    python列表与元组的用法 目录: 列表的用法: 1.增   append   +    extend 2.删  del    remove 3.改   insert 4.查  index 5.反向 ...