匿名函数lambda

简单的函数不用def定义,用匿名函数lambda就可以搞定:

f = lambda x: x + 1  
res = f(1)
print(res)

lambda和下面的函数是一个作用

def f(x):
return x + 1

lambda:lambda是一个表达式,函数体比def简单很多,冒号前面是形参,冒号后面是返回值,匿名函数,省的为了起名字而烦恼
例1:
s = lambda x, y: x + y
res = s(1, 2)
print(res) # 打印出3

例2:
res = list(filter(lambda x: x % 2, range(10)))
print(res) # 打印出[1, 3, 5, 7, 9]

例3:
res = list(filter(lambda x: not(x % 3), range(100)))
print(res) # 打印出100以内3的倍数,也可以用列表生成式来计算,如[y for y in range(1, 101) if y % 3 == 0]

例4:
我希望打包的形式是灵活多变的列表而不是元组(希望是[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]这种形式),你能做到吗?(采用map和lambda表达式)

res = list(map(lambda x, y: [x, y], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
print(res)

也可以通过函数来实现,代码如下:

def zip_after():
lis = []
for k, v in zip([1, 3, 5, 7, 9], [2, 4, 6, 8, 10]):
res = [k, v]
lis.append(res)
print(lis)


zip_after()

5、台阶问题/斐波那契
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?
fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2)
print(fib(3))

6、变态台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?
fib = lambda n: n if n < 2 else 2 * fib(n - 1)
print(fib(3))

7、矩形覆盖
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
第2*n个矩形的覆盖方法等于第2*(n-1)加上第2*(n-2)的方法。
f = lambda n: 1 if n < 2 else f(n - 1) + f(n - 2)

原文地址:https://www.cnblogs.com/laosun0204/p/11038108.html