资讯专栏INFORMATION COLUMN

python学习笔记-map/reduce/filter/sorted

用户83 / 1063人阅读

摘要:会依次将中的数据传递到中,根据返回的或者,留下或者抛弃这个值。而对于字符串,则是根据字符串对应的码表进行排序。同时也是一个高阶函数,可以实现自定义的排序方式。

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

python内置了mapreduce函数。

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38244.html

相关文章

  • Python进阶笔记

    摘要:用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。和不同的是,把传入的函数依次作用于每个元素,然后根据返回值是还是决定保留还是丢弃该元素。字符串给出当前平台使用的行终止符。程序中间的退出,为正常退出。 列表生成式 函数的参数类型 lambda函数 map, reduce, filter, sorted函数 eval, exec, join, zip函数 itertools中的...

    ygyooo 评论0 收藏0
  • 3-函数式编程

    摘要:函数声明为了代码的可读性,在定义一个函数的时候,最好有其函数参数的说明。装饰器函数的代码有一定的规律,写起来大同小异,只是其中的业务逻辑不同。 函数声明 为了代码的可读性,在定义一个函数的时候,最好有其函数参数的说明。示例: def func_test(s): :type s: str :rtype: str pass 实现这种效果可以通过插...

    MyFaith 评论0 收藏0
  • ApacheCN 人工智能知识树 v1.0

    摘要:贡献者飞龙版本最近总是有人问我,把这些资料看完一遍要用多长时间,如果你一本书一本书看的话,的确要用很长时间。为了方便大家,我就把每本书的章节拆开,再按照知识点合并,手动整理了这个知识树。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 贡献者:飞龙版...

    刘厚水 评论0 收藏0
  • SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧

    摘要:学习笔记七数学形态学关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。学习笔记十一尺度不变特征变换,简称是图像局部特征提取的现代方法基于区域图像块的分析。本文的目的是简明扼要地说明的编码机制,并给出一些建议。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 开始之前,我们先来看这样一个提问: pyth...

    lifesimple 评论0 收藏0

发表评论

0条评论

用户83

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<