lambda 匿名函数


匿名函数基础语法

匿名函数的作用: 为了解决那些功能很简单的需求而设计的一句话函数

语法:
func(函数名) = lambda(关键字) 参数:返回值

  • 参数可以有多个,用逗号隔开
  • 匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
  • 返回值和正常的函数一样可以是任意数据类型
1
2
3
4
5
6
# 把以下函数变成匿名函数
def add(x,y):
return x+y

add = lambda x,y:x+y
print(add(1,2)) # 3

匿名函数和其他功能函数合作

lambda 常常和几个内置函数一起使用 max min sorted filter map

和max函数配合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 字典取最大值的key
# 字典取最大值
dic={'k1':10,'k2':100,'k3':30}
ret = max(dic,key=dic.get)
print(dic[ret]) # 100

# 字典取最大值的键
dic2={'k1':10,'k2':100,'k3':30}
ret1 = max(dic2)
print(ret1) # k3 key按照文本大小的最大值

# 字典取最大值的键
dic2={'k1':10,'k2':100,'k3':30}
def max_dict_key(key):
return dic2[key]

ret = max(dic2,key=max_dict_key)
print(ret) # k2

# lambda 匿名一句话函数
ret = max(dic2,key=lambda key:dic2[key])
print(ret) # k2

和filter函数配合

1
2
3
4
5
6
7
8
9
10
11
12
# filter 配合 lambda
#取出数组中大于10的数据 [5,8,11,9,15]
def func(x):
return x > 10
ret = filter(func,[5,8,11,9,15])
for i in ret:
print(i) # 11 15

# lambda 匿名一句话函数
ret = filter(lambda x:x > 10,[5,8,11,9,15])
for i in ret:
print(i) # 11 15

和map函数配合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ret = map(abs,[-1,2,-3,4])
for i in ret:
print(i) # 1,2,3,4

def func_map(x):
return x**2
ret = map(func_map,[-1,2,-3,4])
for i in ret:
print('func_map:',i)

# lambda 匿名一句话函数
ret = map(lambda x:x**2,[-1,2,-3,4])
for i in ret:
print('func_map_lanbda:',i)

匿名函数面试题

1
2
3
4
5
6
7
8
# 1.下面程序的输出结果是:
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x) # 4
x = t(x) # 12
x = d(x) # 24
print(x) # 24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 2.现有两元组(('a'),('b')),(('c'),('d')) ,请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
# lambda
# zip

ret = zip((('a'),('b')),(('c'),('d')))
# for i in ret:
# print(i)

# def func(tup):
# return {tup[0]:tup[1]}

# res = map(func,ret)
# for i in res:
# print(i)

res = map(lambda tup:{tup[0]:tup[1]},ret)
print(list(res)) # [{'a': 'c'}, {'b': 'd'}]