小甲鱼零基础python课后题 P22 021函数:lambda表达式

时间:2023-03-09 02:49:11
小甲鱼零基础python课后题 P22 021函数:lambda表达式

0.请使用lambda表达式将下边函数转变为匿名函数

def fun_A(x,y=3):
return x*y

答:

lambda x,y=3:x*y

1.请将下边的匿名函数转变为普通的屌丝函数

lambda x : x if x % 2 else None

答:

def funt(x):
if x % 2:
return x
else:
return None

  

2.感受一下使用匿名函数后给你的编程生活带来的变化

答:代码更简洁,内存利用更高和脑壳有点转不过来。

3.你可以利用 filter()和lambda表达快速求出100以内所有3的倍数吗?

答:

print(list(filter(lambda n :not(n%3),range(100))))

4.还记得列表推导式吗?完全可以使用列表推导式代替导式filter()和lambda组合,你可以做到吗?

答:

print([i for i in range(100) if not(i%3)])

5.还记得zip吗?使用zip会将两数以元祖形式绑定在三块,例如:

>>>list(zip([1,3,5,7,9],[2,4,6,8,10]))
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

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

答:

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

6.请目测以下表达式会打印什么?

def make_repeat(n):
return lambda s:s*n
double = make_repeat(2)
print(double(8))
print(double("FISHC"))

答:

16
FISHCFISHC