Python map/reduce
发布日期:2022-04-02 18:15:36 浏览次数:8 分类:博客文章

本文共 1154 字,大约阅读时间需要 3 分钟。

2017-07-31 18:20:59

一、map函数

map():会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的iterator,即迭代器,使用list函数可以将之转成列表。

  • map(function, iterable, ...)
    • function -- 函数
    • iterable -- 一个或多个序列
def f(x):    return x ** 2print(type(map(f,[1,2,3])))print(list(map(f,[1,2,3])))# 
# [1, 4, 9]

map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的 f(x)=x2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串等。

 

二、reduce函数

reduce():函数会对参数序列中元素进行累积。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作,用传给reduce中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

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

 

  • reduce(function, iterable[, initializer]):
    • function -- 函数,有两个参数
    • iterable -- 可迭代对象
    • initializer -- 可选,初始参数
from functools import reducedef add(x,y):    return x+yprint(reduce(add,list(range(10)))) # 45

 可以使用reduce来进行str转int

from functools import reducedef str2int(s):    def fn(x, y):        return x * 10 + y    def char2num(s):        return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]    return reduce(fn, map(char2num, s))

 

转载地址:https://www.cnblogs.com/hyserendipity/p/7264736.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Python 爬虫-股票数据的Scrapy爬虫
下一篇:Python 错误与异常

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月16日 21时26分56秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章