1. map() 函数的功能:

map(f, [x1,x2,x3]) = [f(x1), f(x2), f(x3)]

def f(x):
return x*x
a = map(f, [1, 2, 3, 4, 5])
b = map(f, (6, 7, 8, 9))
print a
print b
# [1, 4, 9, 16, 25]
# [36, 49, 64, 81]# a = map(f, 1,2,3,4,5,6,7)
# print a
# Traceback (most recent call last):
# File "C:/workplace/SVC/DiskVideoTask/modules/test_mapReduce.py", line 8, in <module>
# a = map(f, 1,2,3,4,5,6,7)
# TypeError: argument 2 to map() must support iteration

2. reduce()的用法:
reduce(f, [x1, x2, x3]) = f(f(f(x1,x2),x3),x4).

def add(x,y):return x+yprint reduce(add,[1,2,3,4,5])
# 15def str2int(s):def fn(x,y):return x * 10 + ydef char2num(s):return {'0':0, '1':1, '2':2, '3':3,'4':4, '5':5, '6':6, '7':7, '8':8,'9':9}[s]return reduce(fn,map(char2num,s))print str2int('9876')# 9876

3. filter()的用法

filter(f, [x1,x2,x3]) = [x1], f(x1)=True, f(x2)=False, f(x3)=False
注意: filter参数中f函数返回的是布尔类型的值, filter根据f(x1)返回的值是否是True而决定是否返回x1.

def is_odd(n):return n % 2 == 1print filter(is_odd, [1,2,3,4,5,6,7])def not_empty(s):return s and s.strip()# 若 s and s.strip() 这个与命题结果为空字符,那么结果为False.# 若 s and s.strip() 这个与命题结果为非空字符串,那么结果为True.print filter(not_empty, ['A', 'B ', '', None, ' '])
# ['A', 'B ']

4. sorted()的用法
内建函数sorted()默认排序顺序为:
   对于两个元素x和y,如果x<y,则返回-1;
          如果x==y,则返回0;
          如果x>y, 则返回1.

print sorted([36,5,11,9,22])
# [5, 9, 11, 22, 36]
# 如果是数字,默认按从小到到的顺序排列.
print sorted(['I','Hello','Gim', 'you', 'him', 'apple', 'banana'])
# ['Gim', 'Hello', 'I', 'apple', 'banana', 'him', 'you']
# 如果是字符串,默认先比较大写字符串的大小,然后再比较小写字符创的大小。都是从小到大顺序排列。

sorted()函数也是一个高阶函数。可以接收一个自定义的排序函数,从而来为给出的序列排序。
若希望数字从大到小排列。那么自定义一个函数revered_cmp

def revered_cmp(x,y):if x > y:return -1if x < y:return 1return 0print sorted([36,5,11,9,22], revered_cmp)
# [36, 22, 11, 9, 5]        

若希望字符串忽略大小写来排序。那么字定义一个函数cmp_ignore_case.

def cmp_ignore_case(s1,s2):u1 = s1.upper()u2 = s2.upper()if u1 > u2:return 1if u1 < u2:return -1return 0print sorted(['I','Hello','Gim', 'you', 'him', 'apple', 'banana'], cmp_ignore_case)
# ['apple', 'banana', 'Gim', 'Hello', 'him', 'I', 'you']    

显然,map, reduce, filter, sorted都是高阶函数。分别实现了映射,连续计算,过滤,排序。

高阶函数的抽象能力是非常强大的,而且,核心代码可以保持得非常简洁。

匿名函数

Python有两种函数,一种是用def定义的,另一种则是接下来要谈的匿名函数,用lambda定义的。

为什么要用匿名函数?

1. 有些程序代码只出现一次,即一次性的,那么用匿名函数,不需要定义函数名,节省内存中的变量空间。

2. 使代码更加简洁。

1 result = filter(lambda x: x>3, [1,2,3,4,5])
2 print result
3 #[4, 5]

若filter函数中的匿名函数所起的作用是一次性的,我们就用匿名函数来实现这个函数功能。

匿名函数的几个规则:

1. 不用函数名

2. 可以没有参数,可以有多个参数,参数可以带默认值。

3. 函数中只能写一个表达式。

4. 不用写return, 返回值就是表达式的结果

应用:

匿名函数一般应用于函数式编程。常和map, reduce 和 filter函数结合使用。

转载于:https://www.cnblogs.com/haoshine/p/5098088.html

Python map/reduce/filter/sorted函数以及匿名函数相关推荐

  1. py函数式编程(高阶函数map/reduce/filter/sorted、闭包函数/返回函数、匿名函数lamber、@装饰器decorator、偏函数functool.partial())

    #py函数式编程.py #高阶函数map/reduce/filter/sorted.闭包函数/返回函数.匿名函数lamber.@装饰器decorator.偏函数functool.partial()# ...

  2. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊...

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  3. Python map, reduce, filter和sorted

    map map(funcname, list) python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中, 并返回响应的新的list 如下: def sq(x):r ...

  4. python内置函数map reduce filter详解,面试必备知识

    面试时候经常会考到 map reduce filter 这三个内置函数的使用 map() 函数 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调 ...

  5. Swift-高阶函数如map,reduce,filter的一些总结

    Swift 这个语言,速度快,更加安全,代码少,易于阅读维护. 所以一些高阶函数在项目实际使用中也是蛮方便的总结如下: 高阶函数的定义:一个函数如果可以以某个函数作为参数,或者返回值,那么这个函数就称 ...

  6. 一文弄懂python中的函数(自定义函数,匿名函数,高阶函数与解析式)

    什么是函数,如何在 Python 程序中定义函数呢? 说白了,函数就是为了实现某一功能的代码段,只要写好以后,就可以重复利用. python中的自定义函数 Python 的函数具有非常灵活多样的参数形 ...

  7. python中的匿名函数_python匿名函数

    文章导读: 以前自己一直没搞明白Python中的匿名函数,现在拿这个问题基本上搞明白了,拿自己的理解整成一篇文章,附带大量例子,让其更加好理解. 在编程语言中,函数的应用: 1. 代码块重复,这时候必 ...

  8. python高阶函数和匿名函数

    1.高阶函数 把函数当成一个参数的函数 例子: abs函数作为一个参数 def add(a,b,f): return f(a) + f(b) print (add(10,-10,abs)) 结果: 2 ...

  9. 匿名函数python_基于python内置函数与匿名函数详解

    内置函数 Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice() any() d ...

  10. python之路——内置函数和匿名函数

    楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...

最新文章

  1. 图灵四月书讯 ——经典与技术前沿的融合
  2. 【java基础知识】通过java实时查询数据库
  3. mysql8 win10_window10下安装多个MySQL8.0
  4. Citrix XenDesktop 虚拟桌面 每用户/设备 许可手动释放
  5. OpenNI体感应用开发实战 (Kinect相机)
  6. web页面移动端键盘弹出后对页面布局的影响
  7. MATLAB求解三角函数
  8. 常见笔顺错误的字_容易出错的汉字|汉字中哪些字笔顺容易错
  9. 使用idea时maven报错:Error reading file pom.xml
  10. 美国英语情景对话大全(zt)
  11. 在电脑上微信无法语音聊天,微信听不到语音声音
  12. 什么是编程语言,语言之间的区别
  13. 语义分割介绍和FCN
  14. KubeEdge+Fabedge集成环境搭建教程
  15. python 加速度_MicroPython动手做(20)——掌控板之三轴加速度
  16. node.js学习-第二章节
  17. 逐帧绘制毕达哥拉斯树
  18. 海海软件发布HHMeet Android安卓测试版- 加密保护Zoom视频会议-手机直播防翻录
  19. 模拟电子基础之(一)半导体基础知识
  20. 浅谈化合物数据管理的重要性

热门文章

  1. 需要什么数据?要说清楚、准确
  2. Linux中如何判断一个另外进程是否活着
  3. 纽微特记事:有了工作产出,领导吓坏了
  4. 如何用c语言做衣物存放系统,C语言一个简单的商店管理系统
  5. innobackupex 恢复到mysql目录_innobackupex备份mysql恢复后迁移到新的mysql实例
  6. C++中的explicit、implicit关键字
  7. 灰色关联分析_(案例)相关分析之灰色关联度
  8. MySQL 事务 MVCC 版本链
  9. Github Page搜索工具更新 - 收藏,手气不错
  10. Spring Security Oauth2系列(一)