map/reduce是一种编程思想,在各个领域都有它的实践。
网上有一个简单的例子解释map/reduce。
比如说你需要数一下某一个图书馆中有多少本藏书。
最傻瓜的做法就是排一个人从头数到尾。这样速度慢,低效。
另一种方法就是先将图书馆划分成几个区域,派多个人,每人负责一个区域去数书架上的藏书数。这就是map
.
当大家都把各自的数完了,一个人负责加和所有的图书数。这就是reduce
。
这里有几篇文章可能会帮助理解。http://blog.jobbole.com/1321/ 和
http://blog.csdn.net/lifuxian...
python内置了map
和reduce
函数。
map 函数
map
函数接受两个参数,第一个是函数f,第二个是序列。map
函数的作用就是将传入的函数作用在序列的每一个元素上,并放回一个新的序列。所以函数f接收一个参数。map
其实是把运算规则抽象化了,是一个高阶函数。
reduce
reduce
函数也接受两个参数,第一个是函数f,第二个是序列。函数f接收两个参数。
f先从序列开端取两个元素,计算得一个结果。该结果再与序列第三个参数作为两个参数代入函数f计算得一个结果,如此不断重复。
filter
filter(func,list)
filter会依次将list中的数据传递到func中,根据func返回的True或者False,留下或者抛弃这个值。
例如
// 定义一个函数,判断是否是int
def is_int(x):
return isinstance(x, int)
l = [1, 2, 3, '100', 'yes']
print filter(is_int, l)
sorted
python可以用sorted
函数实现默认的排序。对于数字,则根据数字大小进行排序。而对于字符串,则是根据字符串对应的Ascii码表进行排序。
同时sorted
也是一个高阶函数,可以实现自定义的排序方式。
例如我们需要实现一个不区分大小写的字符排序方式,则可以先将所有的字符转化成小写,然后再比较。
实现的自定义比较函数必须是接收两个参数,三种返回结果:1,0,-1.
def my_compare(x, y):
x = x.lower()
y = y.lower()
if x < y:
return -1
elif x == y:
return 0
else:
return 1
print sorted(['a','B','c','d'],my_compare)
#打印结果 ['a', 'B', 'c', 'd']
若你希望改成逆序,则调换一下返回值即可。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。