自学python_10 函数05

匿名函数:

def f(a,b):
	return a + b;

s = lambda a,b : a + b

print(s)
# <function <lambda> at 0x0000015786F149D8>

匿名函数的返回值是一个函数,说明返回给s之后是可以使用s()调用的,在这里s的功能和f的功能是相同的。

匿名函数也可以作为参数传递(在调用时用匿名函数)。举个例子:



s = lambda a,b : a + b


def f1(func):
	return func(2,3)

print(f1(s))
# 5

匿名函数和内置函数的结合应用:

lst = [{'a':1},{'a':2},{'a':3}]
print(max(lst))
# TypeError("'>' not supported between instances of 'dict' and 'dict'")

字典无法比较大小,而max函数中有个key值,可以根据key值来找出最大的。这时我们就要用到lambda函数来确定key值了。

lst = [{'a':1,'b':1},{'a':2,'b':2},{'a':3,'b':3}]

print(max(lst,key = lambda x : x['a']))

reduce 与 lambda 函数的结合:

# reduce(function, iterable[, initializer])
# function -- 函数,有两个参数
# iterable -- 可迭代对象
# initializer -- 可选,初始参数

>>>def add(x, y) :            # 两数相加
...     return x + y
... 
>>> reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
15
>>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
15

reduce 函数在底层的操作是:
取出1,2相加,得到3,取出4再相加,以此类推。

但是,如果只有一个元素时,需要在参数列表中加入 initial 形参,initial 的默认值是None,不人工给它赋值就会报错。

result = reduce(lambda x,y : x + y,tuple1,10)

里面的10就是定义的初始化数据,使用时应注意,初始值是放在代码里x的位置上的,尤其是减法的时候,一定要分清楚。

filter 与 lambda:
filter 是作为过滤器使用的,使用时形参为函数或None和一个可迭代的容器(list,tuple等)。底层是遍历列表,然后创建一个filter对象存储,最后返回。这里可以吧filter对象转换成列表等存储容器。

import builtins
list1 = [12,3213,312,423,1,5,3,2]
result = filter(lambda x: x > 10,list1)
# 此处的lambda为函数,可以替换为None。
print(list(result))
# [12, 3213, 312, 423]

sort sorted 函数与lambda:

可以看这个博客,里面介绍的比较详细。

https://blog.csdn.net/u014798502/article/details/78161728

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值