python内置支持不少函数式编程思想
比如内置函数reduce,map,filter,any,all
支持lazy求值(yield)的用法
支持lambda
我们看几个简单的例子体验一下lambda的厉害
题一:求最大公约数
gcd = lambda x,y: gcd(y,x%y) if x%y else y
print gcd(a,b)
题二:求100以内的素数,并以空格分开后将结果输出
print ' '.join(map(str,reduce(lambda l,x:l if any([x%i==0 for i in l]) else l + [x],range(2,100),[])))
这个乍一看往往会吓一跳,我们看看分解步骤
isPrime = lambda primes,x : primes if any([x%prime==0 for prime in primes]) else primes + [x]
primes = reduce(isPrime, range(2,100), [])
strPrimes = map(str, primes)
print ''.join(strPrimes)