Python的语法虽然简洁,但功能非常强大,为了印证这一点,今天来看一下非常有趣lambda表达式。
lambda表达式是用来创建一个匿名函数,方式是:lambda <参数>: 表达式,看下面的例子:
>>> f = lambda a, b: a + b
>>> f(1,2)
3
>>> type(f)
<type 'function'>
所以,本质上f是一个函数,但在使用lambda定义时,不需要为该函数指定名字。对于短小的函数,这种方式在性能提升上非常有效。 搭配Python的内置函数filter, reduce和map能有很多简洁的用法:
获取10以内的奇数:
>>> filter(lambda x: x%2 != 0, range(10))
[1, 3, 5, 7, 9]
查找长度不小于3的符串:
>>> filter(lambda s: len(s) >= 3, ['hello', 'th', 'ok?'] )
['hello', 'ok?']
求数列和 1+2+3+...+ n,比如0 1 + 2 + ... + 9:
>>> reduce(lambda a, b: a + b, range(1, 10))
45
>>> S = lambda n: reduce(lambda a, b: a + b, range(1, n+1))
>>> S(9)
45
>>> S(10)
55
求阶乘n!,比如求1*2*3*4*5:
>>> 1*2*3*4*5
120
>>> reduce(lambda a, b: a * b, range(1, 6))
120
>>> L = lambda n: reduce(lambda a, b: a*b, range(1, n+1))
>>> L(5)
120
>>> L(6)
720
字符串大小写转换:
>>> map(lambda s: s.upper(), ['a','abc','d','e'])
['A', 'ABC', 'D', 'E']
lambda函数也可以用在类里面,例如实现一种新的可以支持add方法的整型:
>>> class INT(int):
... add = lambda self, x: x + self.real
>>> INT
<class '__main__.INT'>
>>> b = INT(2)
>>> b.add(3)
5
就写这么多了,假期最后一天,要出去玩一下了!:-)
