4

map/reduce是一种编程思想,在各个领域都有它的实践。
网上有一个简单的例子解释map/reduce。
比如说你需要数一下某一个图书馆中有多少本藏书。
最傻瓜的做法就是排一个人从头数到尾。这样速度慢,低效。
另一种方法就是先将图书馆划分成几个区域,派多个人,每人负责一个区域去数书架上的藏书数。这就是map.
当大家都把各自的数完了,一个人负责加和所有的图书数。这就是reduce
这里有几篇文章可能会帮助理解。http://blog.jobbole.com/1321/
http://blog.csdn.net/lifuxian...

python内置了mapreduce函数。

map 函数

map函数接受两个参数,第一个是函数f,第二个是序列。map函数的作用就是将传入的函数作用在序列的每一个元素上,并放回一个新的序列。所以函数f接收一个参数。
map function
map其实是把运算规则抽象化了,是一个高阶函数。

reduce

reduce函数也接受两个参数,第一个是函数f,第二个是序列。函数f接收两个参数。
f先从序列开端取两个元素,计算得一个结果。该结果再与序列第三个参数作为两个参数代入函数f计算得一个结果,如此不断重复。
reduce function

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']

若你希望改成逆序,则调换一下返回值即可。


Char
506 声望34 粉丝

hello world