1. 程式人生 > >Python— 匿名函數

Python— 匿名函數

tip lose ges alt 技術 需求 ron bfc das

匿名函數

匿名函數:為了解決那些功能很簡單的需求而設計的 “一句話函數”

#初始代碼
def calc(n):
    return n**n
print(calc(10))
 
#換成匿名函數
calc = lambda n:n**n
print(calc(10))

技術分享

上圖是對calc這個匿名函數的分析

# 關於匿名函數格式的說明

函數名 = lambda 參數 :返回值相當於函數體

# 參數可以有多個,用逗號隔開
# 匿名函數不管邏輯多復雜,只能寫一行,且邏輯執行結束後的內容就是返回值
# 返回值和正常的函數一樣可以是任意數據類型

由此可見:

匿名函數並不是真的沒有名字。

匿名函數的調用和正常的調用也沒有什麽分別。

技術分享
# 把以下函數變成匿名函數
def add(x,y):
    return x+y


# 匿名函數
add = lambda x,y : x+y
匿名函數練習

上面是匿名函數的函數用法。

除此之外,匿名函數也不是浪得虛名。在和其他功能函數合作的時候~~~它真的可以匿名

技術分享
l=[3,2,100,999,213,1111,31121,333]
print(max(l))

dic={k1:10,k2:100,k3:30}


print
(max(dic)) print(dic[max(dic,key=lambda k:dic[k])]) # 執行結果: 31121 k3 100 Process finished with exit code 0
匿名函數與 max 混用 技術分享
res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
    print(i)

# 執行結果
1
25
49
16
64
匿名函數與 map 混用 技術分享
res = filter(lambda x:x>10,[5,8,11,9,15])
for i in
res: print(i) # 執行結果 11 15
匿名函數與 filter 混用 技術分享
‘‘‘
1.下面程序的輸出結果是:
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print x
‘‘‘

‘‘‘
2.現有兩元組((‘a‘),(‘b‘)),((‘c‘),(‘d‘)),請使用python中匿名函數生成列表[{‘a‘:‘c‘},{‘b‘:‘d‘}]
‘‘‘

‘‘‘
3.以下代碼的輸出是什麽?請給出答案並解釋。
def multipliers():
    return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])
請修改multipliers的定義來產生期望的結果。
‘‘‘
面試題:匿名函數 技術分享
# 第一題 
   24

Process finished with exit code 0



# 第二題
t1 = ((a), (b))
t2 = ((c), (d))
t3 = zip(t1, t2)
print(list(lambda t : {t[0] : t[1]}, t3))


# 第三題
# 答案一
test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
print(test(t1,t2))
# 答案二
print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
# 答案三
print([{i:j} for i,j in zip(t1,t2)])
答案——面試題: 匿名函數

Python— 匿名函數