廖雪峰老师python教程——map/reduce

Posted Chaoyuan_Jam

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了廖雪峰老师python教程——map/reduce相关的知识,希望对你有一定的参考价值。

Map【单个操作对不同单一对象重复进行】


 

  • map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回
  • 返回结果注意转化为list输出;【有点,看起来抽象直观】
>>> 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)
>>> from functools import reduce
>>> def fn(x, y):
...     return x * 10 + y
...
>>> reduce(fn, [1, 3, 5, 7, 9])

 

综合案列


  • str2int()函数定义:
from functools import reduce

DIGITS = {\'0\': 0, \'1\': 1, \'2\': 2, \'3\': 3, \'4\': 4, \'5\': 5, \'6\': 6, \'7\': 7, \'8\': 8, \'9\': 9}

def str2int(s):
    def fn(x, y):
        return x * 10 + y
    def char2num(s):
        return DIGITS[s]
    return reduce(fn, map(char2num, s))
  • 上面函数是最终抽象化的结果,可以尝试带一个字符‘123’进去看一看。

 

学到的几个其他函数:


  • capitalize()、title():变成首字母大写,其他字母小写。




 

 

 

以上是关于廖雪峰老师python教程——map/reduce的主要内容,如果未能解决你的问题,请参考以下文章

廖雪峰老师python教程——OOP

廖雪峰老师python教程——filter/sorted

廖雪峰老师python教程——IO编程

进程 vs. 线程(python的协程)(转廖雪峰老师python教程)

廖雪峰老师python教程——进程与线程

廖雪峰老师的python教程中的几个学习笔记的备份