①从参数方面来讲:
map()函数:
map()包含两个参数,第一个是参数是一个函数,第二个是序列(列表或元组)。其中,函数(即map的第一个参数位置的函数)可以接收一个或多个参数。
reduce()函数:
reduce() 第一个参数是函数,第二个是 序列(列表或元组)。但是,其函数必须接收两个参数。
②从对传进去的数值作用来讲:
map()是将传入的函数依次作用到序列的每个元素,每个元素都是独自被函数“作用”一次;(请看下面的栗子)
reduce()是将传人的函数作用在序列的第一个元素得到结果后,把这个结果继续与下一个元素作用(累积计算),
最终结果是所有的元素相互作用的结果。(请看下面的栗子)
举个栗子:
map()函数:
[python]
view plain
copy
-
# 传入一个参数
-
def one_p(x):
-
return x * x
-
print 'map1.1:', map(one_p, range(1, 5))
-
#结果:map1.1: [1, 4, 9, 16]
-
print 'map1.2:', map(one_p, [1, 2, 3, 4, 5, 6])
-
#结果:map1.2: [1, 4, 9, 16, 25, 36]
-
-
# 传入多个参数
-
a = [1, 2, 3, 4, 5]
-
b = [1, 1, 6, 2, 3]
-
c = [1, 2, 3, 4, 5]
-
s = map(lambda (x, y, z): x * y * z, zip(a, b, c))
-
print 'map2:', s
-
#结果:map2: [1, 4, 54, 32, 75]
reduce()函数:
[python]
view plain
copy
-
r1 = reduce(lambda x, y: x * y, (2, 2, 6, 2)) #运算过程:(((2*2)*6)*2)
-
r2 = reduce(lambda x, y: x * y, (2, 2, 6), 2) #<span style="font-family: Arial, Helvetica, sans-serif;">运算过程:(((2*2)*6)*2)</span>
-
print 'r1:', r1 # 结果:r1: 48
-
print 'r2:', r2 # 结果:r2: 48
zip()
函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
-
>>>a = [1,2,3]
-
>>> b = [4,5,6]
-
>>> c = [4,5,6,7,8]
-
>>> zipped = zip(a,b) # 打包为元组的列表
-
[(1, 4), (2, 5), (3, 6)]
-
>>> zip(a,c) # 元素个数与最短的列表一致
-
[(1, 4), (2, 5), (3, 6)]
-
>>> zip(*zipped) # 与 zip 相反,可理解为解压,返回二维矩阵式
-
[(1, 2, 3), (4, 5, 6)]
列表元素依次相连:
# -*- coding: UTF-8 -*-
l = ['a', 'b', 'c', 'd', 'e','f']
print l
#打印列表
print zip(l[:-1],l[1:])
输出结果:
['a', 'b', 'c', 'd', 'e', 'f']
[('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'e'), ('e', 'f')]
reduce
()函数在库functools里,如果要
使用
它,要从这个库里导入。
reduce
函数与
map
函数有不一样地方,
map
操作是并行操作,
reduce
函数是把多个参数合并的操作,也就是从多个条件简化的结果,在计算机的算法里,大多数情况下,就是为了简单化。比如识别图像是否是一只猫,那么就是从众多的像素里提炼出来一个判断:是或否。可能是几百万个像素,就只出来一个结果。在GOOGLE大规模集群里,就...
reduce
为累计器,
reduce
虽然可以用来处理数据结构并进行数据结构的重组,但是规范来讲,一般不采取这样的做法,通常只是用
reduce
进行累计计算,返回一个对象或数值型的累积结果
map
为迭代器,通常用于处理数据结构的所有数据,并进行数据结构的重构
通过遍历数组并
使用
三元表达式判断完成数组信息的重构
map
()主要是映射,进行并行运算,而
reduce
()如其名,减少,归纳,
map
()函数有两个参数(类型),第一个参数是函数,第二个参数是一个序列(从第二个起,可以有多个参数,根据第一个参数函数接受的参数来定)
reduc()e函数有两个参数,但是
区别
在于
reduce
()第一个参数的函数必须接受两个参数
话不多说,直接摆例子
map
():
l = [1, 2, 3, 4]
def func(x, y):
print("%s,%s"%(x,y))
x = x+2
在
python
3中:
zip
() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
我们可以
使用
list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
2.返回值:
python
2直接返回一个元组列表
map
redue是根据谷歌的三大论文里面的
map
reduce
paper的出来的一个hadoop计算引擎。
我们现在可以说是ZB时代了,日益所需的大数据时代让我们不得不
使用
分布式存储,分布式计算,分布式调度。以往的单台计算机已经存储不了我们的数据,也不能很快的计算我们想要实现的过程。
今天,就来讨论讨论分布式计算的
map
reduce
。
map
reduce
分成
map
端和
reduce
端。
ma...
在
python
编码过程中,实际上是写机器学习代码过程中,我发现有三个高频函数被
使用
,也就是这篇博客要介绍的
zip
、
map
以及
reduce
三大函数。
其中
map
、
zip
是
python
的内置函数,也就是全局函数,在
python
3中
reduce
函数不再是内置函数,它被放在了functools模块中了。
对于内置函数我们可以在
python
窗口界面中通过help(func)命令方式获取其
使用
方法。
一、zi...
①从参数方面来讲:
map
()函数:
map
()包含两个参数,第一个是参数是一个函数,第二个是序列(列表或元组)。其中,函数(即
map
的第一个参数位置的函数)可以接收一个或多个参数。
reduce
()函数:
reduce
() 第一个参数是函数,第二个是 序列(列表或元组)。但是,其函数必须接收两个参数。②从对传进去的数值作用来讲:
map
()是将传入的函数依次作用到序列的每个元素,每个元素都是...
1,
reduce
上代码:from functools import
reduce
sum1 =
reduce
(lambda x, y: x + y, range(1, 5))
print(sum1) # 10输出结果:10结论:
reduce
返回的是函数经过执行运算后的结果,
reduce
累计运算,适合做大数据的运算,前两个元素作用得到结果后,继续和下一个元素运算2.
map
上代码:sum2 = m...
1、并行遍历:
zip
和
map
内置的
zip
函数可以让我们
使用
for循环来并行
使用
多个序列。在基本运算中,
zip
会取得一个或多个序列为参数,然后返回元组的列表,将这些序列中的并排的元素配成对。
L1 = [1,2,3,4]
L2 = [5,6,7,8]