匿名函数
-
关键字 lambda
cale = lambda n, m : n * m #定义一个匿名函数 print(cale(10, 20)) #求10和20的积
-
匿名使用
-
lambda结合函数使用
#实例1 #求字典中value值的最大值对应的key dic = {'k1':10, 'k2':30, 'k3':20} print(max(dic)) #结果 k3 print(max(dic, key=lambda k: dic[k])) #结果 k2 #实例2 #筛选列表中大于10的数 res = filter(lambda x:x>10, [1, 3, 5, 10, 15, 20]) for i in res: print(i) #结果 15 20
-
-
带key参数的函数
min()``max()``filter()``map()``sorted()
都能结合lambda
面试题
#面试题1
#将(('a'), ('b'))和(('c'), ('d'))变成[{'a': 'c'}, {'b': 'd'}]
tu1 = (('a'), ('b'))
tu2 = (('c'), ('d'))
print(list(map(lambda x: {x[0]:x[1]}, zip(tu1, tu2))))
#面试题2
#问以下输出的结果
def multipliters():
return [lambda x:x * i for i in range(4)] #这里是列表生成式
print([m(2) for m in multioliters])
#结果
[6, 6, 6, 6]
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#
#修改一下
def multipliters():
return (lambda x:x * i for i in range(4)) #这里是生成器表达式
print([m(2) for m in multioliters])
#结果
[0, 2, 4, 6]