天池计划-python-tasks 三

lambda 表达式

匿名函数定义

在 Python 里有两类函数:

  • 第一类:用 def 关键词定义的正规函数
  • 第二类:用 lambda 关键词定义的匿名函数

lambda argument_list: expression

  • lambda - 定义匿名函数的关键词。
  • argument_list - 函数参数,它们可以是位置参数、默认参数、关键字参数,和正规函数里的参数类型一样。
  • :- 冒号,在函数参数和表达式中间要加个冒号。
  • expression - 只是一个表达式,输入函数参数,输出一些值。
  • expression 中没有 return 语句,因为 lambda 不需要它来返回,表达式本身结果就是返回值。
  • 匿名函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
lam1 = lambda y:y-1
lam2 = lambda y,x:y*x
z = [lam1(x) for x in range(11)]
print(lam1)
print(lam1(10))
print(z)
print(lam2(3,11))
#<function <lambda> at 0x000001546B26FB80>
#9
#[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#33

匿名函数应用

#非函数式编程
x = [1,2,3]
def fun1(x):
	for i in range(0,len(x)):
		x[i] *= 2
	return x
y=fun1(x)
print(x,y)
#[2, 4, 6] [2, 4, 6]

#函数式编程
x = range(1,4)
def fun2(x):
	y=[]
	for i in x:
		y.append(i+i)
	return y
y = fun2(x)
print(x,y)
#range(1, 4) [2, 4, 6]

匿名函数应用于函数式编程的高阶函数 (high-order function)中,主要有两种形式:

  • 参数是函数:filter, map
  • 返回值是函数 :closure
lam3 = lambda x:x>10
l2  = filter(lam3,range(1,30))
print(list(l2))
#[11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

lam4 = lambda x,y:x+y
l3 = map(lam4,range(1,30),range(1,10))
print(list(l3))
#[2, 4, 6, 8, 10, 12, 14, 16, 18]

def fun4(fun,l4):
	return fun(l4)
l4 = range(1,20)
print(list(l4))
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
print(fun4(sum,l4))
#190
print(fun4(len,l4))
#19
lam5 = lambda x:sum(x)/len(x);
print(fun4(lam5,l4))
#10.0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lsswear

感谢大佬打赏 q(≧▽≦q)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值