python 函数式编程
map
>>> map(str,range(20))
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19']
filter
filter 函数可以基于一个返回布尔值的函数对元素进行过滤
>>> def func(x):
... return x.isalnum()
...
>>> seq=['foo','x41','!!']
>>> filter(func,seq)
['foo', 'x41']
注:isalnum()方法,如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
lambda函数
>>> foo=lambda x:x**x
>>> foo(10)
10000000000
列表推导式
>>> seq
['foo', 'x41', '!!']
>>> [x for x in seq if x.isalnum()]
['foo', 'x41']
lambda表达式的特性
>>> seq
['foo', 'x41', '!!']
>>> [x for x in seq if x.isalnum()]
['foo', 'x41']
>>> filter(lambda x:x.isalnum(),seq)
['foo', 'x41']
reduce 函数
reduce函数一般来说不能轻松被列表推导式替代,但是通常用不到这个功能。它会将序列的前两个元素与给定的函数联合使用,并且将它们返回值和第3个元素继续联合使用,直到整个序列都处理完毕,并且得到一个最终结果。
>>> reduce(lambda x,y:x+y,range(100))
4950