美文网首页我的python学习日记
看了廖雪峰的map和reduce教程的总结

看了廖雪峰的map和reduce教程的总结

作者: Juha | 来源:发表于2018-10-10 14:07 被阅读0次

因为自己也是一个小白,所以对map和reduce也不能很好的理解。如果有错误还是希望高手能够指出~

最近看到一个很有意思的比喻,就是说做一个三明治。map是把所有的原材料加工的方法,比方说胡萝卜洗干净处理好,面包做成面包片,洋葱切成片等等,把原来的东西换个形式,但还是和以前一样是个单独的个体;reduce就是把处理完的食品加工到一起,变成了一个三明治哈哈。

MapReduce.png

首先对于map函数:
map()有两个参数,第一个是模板函数,第二个是可迭代的数据,可以是字符串、元组和列表等。
例如:

t = map(int,'1234')
print(list(t))

结果则是

[1,2,3,4]

即map函数会对序列中的每个元素做目标函数的操作,然后返回一个可迭代的数据。

然后对于reduce函数:
和map函数一样,reduce同样是两个输入参数,第一个是目标函数,第二个是数据。
和map函数不同的是,reduce的目标函数需要有两个输入参数,而且reduce函数返回的数据是作用在所有数据之间的计算结果,不是像map函数一样孤立的处理单独的数据。这么说可能有点不太严谨。可以拿例子说明一下:

reduce(f,[x1,x2,x3]) = f(f(x1),x2),x3)

然后在廖雪峰的教程底下有三道习题,这里贴上我写的方法:

#1、map函数实现将列表中的所有字符串首字母变成大写
def normalizer(x):
  #  for i in x:(这里不需要用for循环,傻了)
     return str.upper(x[0])+str.lower(x[1:])
 def normalize(x):
     return map(normalizer,x)

#2、编写一个prod()函数,可以接受一个list并利用reduce()求积:
from functools import reduce
def times(x,y):
    return x*y
def prod(x):
    return reduce(times,x)
#3、# 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456
from functools import reduce
def mix(a,b):
  return 10*a+b
def flo(x):
    return map(float,x)
def str2float(x):
    index = x.find('.')#取到小数点所在的下标/索引
    a = x[0:index]#小数点之前的则为整数部分
    b = x[index+1:]#小数点之后的则为小数位份
    s = len(b)
    return reduce(mix,flo(a))+reduce(mix,flo(b))*10**(-1*s)

相关文章

  • 使用JavaScript使用map和reduce高阶函数

    同样是在廖雪峰大佬的教程中看的教程,这里贴上廖雪峰的练习题代码: 1、利用reduce()求积: 2、利用map和...

  • 看了廖雪峰的map和reduce教程的总结

    因为自己也是一个小白,所以对map和reduce也不能很好的理解。如果有错误还是希望高手能够指出~ 最近看到一个很...

  • Python初学笔记之MAP()和REDUCE()

    阅读廖雪峰老师的博客,关于Python内建函数map()和reduce()的理解。 1、map()接收两个参数,一...

  • JavaScript | Array常用操作

    Reference : JavaScript教程 - 廖雪峰的官方网站 map JavaScript中的Array...

  • git学习资源总结

    廖雪峰的git教程 廖雪峰git教程-->期末总结里的git的官方网站 里面包含有pro git还有 Learn...

  • Git常用命令

    本文是我在学完廖雪峰Git教程之后的总结,对于以后的查阅有很大帮助。 廖雪峰Git教程地址:地址 初始化Git仓库...

  • Git简单使用

    总结自廖雪峰的博客 更详细的教程可以学习proGit

  • Git安装和使用

    该篇文章为学习廖雪峰git教程的总结,具体可移步廖雪峰老师git教程网站 Git介绍 Git是分布式版本控制系统。...

  • Git 基础操作学习笔记No.1

    前言: 我的学习资料主要是廖雪峰的git教程和git官方documentation,廖雪峰的教程能够帮助我快速建立...

  • Git版本控制学习资料

    一、个人感觉写的非常好,廖雪峰的git教程: 廖雪峰git教程

网友评论

    本文标题:看了廖雪峰的map和reduce教程的总结

    本文链接:https://www.haomeiwen.com/subject/yqdpaftx.html