函数式编程
来源:互联网 发布:ubuntu不知道root密码 编辑:程序博客网 时间:2024/05/10 11:44
高阶函数:以函数作参数的函数
def add(x, y, f): return f(x) + f(y)
map()函数:接收一个函数f和一个list,将f作用于list的每个元素上,返回一个新的list
def f(x): return x*xprint map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
reduce()函数:传入f和list,传入的函数f必须接收两个参数,对list的每个元素反复调用f,返回最终结果
def f(x, y): return x + yprint reduce(f, [1, 3, 5, 7, 9]) #相当于求和
filter()函数:接受一个函数f和一个list,过滤掉f作用下为False的元素,返回新的list
def is_odd(x): return x % 2 == 1filter(is_odd, [1, 4, 6, 7, 9, 12, 17]) #过滤掉偶数
def is_not_empty(s): return s and len(s.strip()) > 0filter(is_not_empty, ['test', None, '', 'str', ' ', 'END']) #过滤空字符串或者None上面程序中,s.strip(rm)表示删除s字符串开头结尾的rm序列,rm为空时删除空白符(\n \t \r 空格等)
sorted()函数:排序函数,可传入比较函数来进行自定义排序
def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0print sorted([36, 5, 12, 9, 21], reversed_cmp) #倒序排列
def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_suml=[1,2,3,4]f=calc_sum(l)print f()使用闭包要确保引用的局部变量在函数返回后不能改变,否则会导致结果错误
匿名函数:不显式定义的函数
map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) #得到[1, 4, 9, 16, 25, 36, 49, 64, 81]
sorted([1, 3, 9, 5, 0], lambda x,y: -cmp(x,y)) #倒序排列
myabs = lambda x: -x if x < 0 else x print myabs(-1)
0 0
- 函数式编程
- 函数式编程
- 函数式编程
- 函数式编程
- 另类函数式编程
- 函数式编程(FP)
- 函数式编程
- 函数式编程
- 函数式编程
- 函数式编程!
- 函数式编程指南
- F# 函数式编程
- 什么是函数式编程
- 函数式编程扫盲
- 函数式编程初探
- 函数式编程
- 函数式编程初探
- 函数式编程初探
- 17.Zend_View
- Minifilter - File Name Support
- Spinner的三级联动
- React-native Navigator导航跳转
- 使用libev写服务器
- 函数式编程
- Java-线程池
- AutoCompleteTextView
- nginx-gridfs 安装
- 思维跳跃之《我的同桌是极品》观后感
- 【考研日记】:感恩蛋疼以及其他事
- java安卓开发软件及环境配置
- Linux下安装jdk-7u76-linux-x64.tar.gz
- 数据结构——线性表