#1.创建匿名函数,无参数
x = lambda :3<2
print(x)
# <function <lambda> at 0x00000153EA9E2EA0>
print(x())
# False
#2.传递多个参数
#计算两个参数的和
ret = lambda x,y:x+y
print(ret(5,10))
# 15
#返回参数中较小的那个数
# def func(x,y):
# if x<y:
# return x
# else:
# return y
# print(func(3, 5))
#改为匿名函数
ret = lambda x,y:x if x<y else y
print(ret(1,2))
# 1
#使用max()函数求字典的最大值
dic = {'k1':10,'k2':30,'k3':20}
# def func(k):
# return dic[k]
# print(max(dic,key=func))
ret = max(dic,key=lambda k:dic[k])
print(ret)
# k2
#使用max()函数,找出年龄最大的那组信息
lst = [
[1001,'zs',20], #学号,姓名,年龄
[1002,'ss',25],
[1003,'ww',28],
]
print(max(lst,key= lambda x:x[:][2]))
# [1003, 'ww', 28]
#求列表中每个元素的平方值
lst = [1,2,3]
lst1 = [1,2,3,4,5,6,7,8]
lst2 = [2,3,4,5,6]
print(list(map(lambda x:x*x,lst)))
# [1, 4, 9]
print(list(map(lambda x,y:x*y,lst1,lst2)))
# [2, 6, 12, 20, 30]
#过滤列表中的所有奇数
lst = [1,2,3,4,0,5,6,7,8,9]
print(list(filter(lambda x:x%2==1 ,lst)))
# [1, 3, 5, 7, 9]
tup1 = ('a','b')
tup2 = ('c','d')
# #生成[{'a':'c'},{'b':'d'}]
#使用zip()变为元组(a,c),(b,d)
#定义匿名函数将传递的参数组成字典
#使用map()变为字典
#讲map()对象转化为列表
print(list(zip(tup1,tup2)))
# [('a', 'c'), ('b', 'd')]
print(list(map(lambda x:{x[0]:x[1]},zip(tup1,tup2))))
# [{'a': 'c'}, {'b': 'd'}]
def func():
x = 4
def action(n):
print(x**n)
return action #返回的是函数的引用,并没有调用函数
ret = func() #此时ret是函数action的引用
ret(2)
# 16
# 将action改为匿名函数
def func():
x=4
return lambda n:x**n
print(func()(2))
#传递默认参数
def func():
x = 4
def action(n,x1=x):
print(x1**n)
return action #返回的是函数的引用,并没有调用函数
ret = func() #此时ret是函数action的引用
ret(2)
# 16
def func():
x=4
return lambda n,x1=x:x1**n
print(func()(2))
# 16
def makeAction():
acts=[]
for i in range(5):
acts.append(lambda x:i**x)
return acts
x = makeAction()
print(x[4](3))
# 64