有你在真好 的个人博客
有趣lambda表达式
阅读:2278 添加日期:2021/3/27 23:26:15 原文链接:https://www.toutiao.com/item/6414987461696422401/

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

就写这么多了,假期最后一天,要出去玩一下了!:-)

ICP备案号:苏ICP备14035786号-1 苏公网安备 32050502001014号