摘要:会依次将中的数据传递到中,根据返回的或者,留下或者抛弃这个值。而对于字符串,则是根据字符串对应的码表进行排序。同时也是一个高阶函数,可以实现自定义的排序方式。
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函数也接受两个参数,第一个是函数f,第二个是序列。函数f接收两个参数。
f先从序列开端取两个元素,计算得一个结果。该结果再与序列第三个参数作为两个参数代入函数f计算得一个结果,如此不断重复。
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"]
若你希望改成逆序,则调换一下返回值即可。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38244.html
摘要:用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。和不同的是,把传入的函数依次作用于每个元素,然后根据返回值是还是决定保留还是丢弃该元素。字符串给出当前平台使用的行终止符。程序中间的退出,为正常退出。 列表生成式 函数的参数类型 lambda函数 map, reduce, filter, sorted函数 eval, exec, join, zip函数 itertools中的...
摘要:贡献者飞龙版本最近总是有人问我,把这些资料看完一遍要用多长时间,如果你一本书一本书看的话,的确要用很长时间。为了方便大家,我就把每本书的章节拆开,再按照知识点合并,手动整理了这个知识树。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 贡献者:飞龙版...
摘要:学习笔记七数学形态学关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。学习笔记十一尺度不变特征变换,简称是图像局部特征提取的现代方法基于区域图像块的分析。本文的目的是简明扼要地说明的编码机制,并给出一些建议。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 开始之前,我们先来看这样一个提问: pyth...
阅读 703·2021-07-25 21:37
阅读 3634·2019-08-30 15:55
阅读 2557·2019-08-30 15:54
阅读 1688·2019-08-30 15:44
阅读 3078·2019-08-30 15:44
阅读 841·2019-08-30 15:43
阅读 1006·2019-08-29 15:36
阅读 3020·2019-08-29 10:58