写点什么

Python——Map-Reduce

用户头像
在即
关注
发布于: 1 小时前
Python——Map-Reduce

Map-Reduce - 映射与归约的思想


  • Python 中有两个非常常见的内置函数:map()和reduce()函数。这两个函数都是应用于序列的处理函数,map()用于映射reduce()用于归并。本关目标就是让学习者了解并掌握map()和reduce()函数的相关知识。


相关知识

1.map()函数


  • map()函数会根据传入的函数对指定的序列做映射。map()函数接收两个参数,一个是 function 函数,另一个参数是一个或多个序列。map()函数会将传入的函数依次作用到传入序列的每个元素,并把结果作为新的序列返回。

  • map()函数的定义为:

  • map(function, sequence[, sequence, ...]) -> list


例如,我们要对一个列表序列中的每个数值元素进行平方运算,结合上一关提到的 lambda 函数的例子,程序代码如下:

r = map(lambda x: x ** 2, [1, 2, 3, 4,])

print(list(r))

输出结果:

[1, 4, 9, 16]


当 map()函数的第二个参数中存在多个序列时,会依次将每个序列中相同位置的元素一起做参数并调用 function 函数。 例如,要对 map()函数传入的两个序列中的元素依次求和,程序代码如下:

r = map(lambda x, y: x + y, [1, 2, 3, 4, 5], [6, 7, 8, 9, 10])

print(list(r))

输出结果:

[7, 9, 11, 13, 15]


当 map()函数传入的序列有多个时,我们要注意 function 函数的参数数量,应和 map()函数传入的序列数量相匹配。


2.reduce()函数


  • reduce()函数把传入的函数作用在一个序列[x1, x2, x3, …]上,且这个函数必须要接收两个参数。reduce()函数把第一次计算的结果继续和序列中的下一个元素做累积计算。

reduce()函数的定义为:

reduce(function, sequence[, initial]) -> value


function 参数是有两个参数的函数,reduce()函数依次在序列中取元素,并和上一次调用 function 函数的结果做参数,然后再次调用 function 函数。

例如:


from functools import reduce

r = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5],6)

print(r)


输出结果:

21

在上述例子中,程序的计算顺序为((((((1+6)+2)+3)+4)+5))。


小结


  • map()和 reduce()函数的应用十分广泛,在分布式计算领域有着十分重要的运用。我们期待着学习者在今后的开发道路上对 map()和 reduce()函数有更加深刻的体验。


实测:

  • 实现相应的功能。具体要求如下:

1.将输入的一个正整数分解质因数,并将结果输出。

例如:输入 90

打印出 90=2*3*3*5*


测试说明

测试输入:

80

预期输出:

80 = 2*2*2*2*5

测试输入:

79

预期输出:

79 = 79

测试输入:

225

预期输出:

225 = 3*3*5*5

测试输入:123456

预期输出:123456 = 2*2*2*2*2*2*3*643


上代码:

28 行:print(x,‘=’,‘*’.join(map(str,result)))


//如果注释理解有误,请大佬们多多评论指教!!

发布于: 1 小时前阅读数: 3
用户头像

在即

关注

记录学习进度 2021.02.27 加入

文章基本上都是课上学到的知识结合自己见解进行写作,如有错误,欢迎各位大牛指出。

评论

发布
暂无评论
Python——Map-Reduce