python函数式编程学习之map,reduce,filter,sorted
map(f, list)函数用于将函数f运用到list里的每个元素中
写个例子
def pow(x):
return x*x
map(pow, [2,3,4])
reduce(f, list)函数用于将函数f运用到list的前两个元素,在将f运用到得到的结果和第三个元素,依次类推
写个例子
def add(x, y):
return x+y
redude(add, ['a', 'b', 'c', 'd'])
abcd
reduce(add, ['a','c','b','d'])
acbd
和map()
类似,filter()
也接收一个函数和一个序列。和map()
不同的时,filter()
把传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素。
sorted()方法对list进行排序
sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]
sorted()
函数也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序
def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0
sorted([36, 5, 12, 9, 21], reversed_cmp) [36, 21, 12, 9, 5]
返回函数
匿名函数lambda
在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)
偏函数functools.partial
就是帮助我们创建一个偏函数的,不需要我们自己定义int2()
,可以直接使用下面的代码创建一个新的函数int2
:
>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64
>>> int2('1010101')
85
所以,简单总结functools.partial
的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
以上参考自廖雪峰老师的python2.7教程