不提了,内功是要慢慢修炼的,现在看看用Python能做点什么。
Python也提供了一些可以适用于函数式编程的特性,比如遍历一个列表,取出一个复合值大于5的列表:
l = [3,6,1,9,7,10]
nl = [x for x in l if x > 5]
再复杂一些可以是
la = [1,3,5,7,9]
lb = [2,4,6,8,0]
nl = [x + y for x in la for y in lb]
那么如果要将两个列表中的项目对应相加呢,可以用python中的map函数实现
la = [1,3,5,7,9]
lb = [2,4,6,8,0]
func = lambda x,y : x+y
nl = map(func,la,lb)
Python还提供了filter函数,用来从序列中取出满足一定条件的子序列:
lc = ['rock', 'tom', 'yakin', 'timosenk']
func = lambda x : len(x) > 4
nl = filter(func,lc)
reduce函数,将序列中的值依次传入计算结果,进行迭代运算
ld = range(100)
func = lambda x,y : x+y
n = reduce(func,ld)
以上差不多就是Python为我们提供的工具,至于从这些开展函数式编程还有很长的路要走,如果你和我一样也是对此一知半解的话,可以去JavaEye的Python圈子里下载那个八皇后问题解的写法体验一下。