匿名函式知識點

2021-09-07 19:54:48 字數 2409 閱讀 7348

一、匿名函式

在定義函式的時候,不想給函式起乙個名字,這個時候就可以用lambda來定義乙個匿名函式

語法:變數名= lambda 引數:表示式

引數:可選,通常以逗號分隔的變數表示式形式,也就是位置引數表示式:不能包含迴圈、return,可以包含if…else…

注意:(1).表示式中不能包含 迴圈,return

(2).可以包含 if…else…語句.

(3).表示式計算的結果直接返回

1、建立乙個匿名函式

func=lambda: 3>2

ret=func()

print(ret)

同等正常函式

def func():

return 3 > 2

ret = func()

print(ret)

2、傳遞多個引數

匿名函式

func = lambda x, y: x + y

ret = func(1, 2) # 如果匿名函式有引數,呼叫匿名函式的時候需要傳遞實參。

print(ret)

正常函式

def func(x,y)

return x+y

ret=func(1,2)

print(ret)

3、使用if…else…語法比大小

匿名函式

func = lambda x, y: y if x < y else x

# 注意if和else 沒有 : 不能換行,if判斷體寫在判斷條件前面

ret = func(30, 20)

print(ret)

正常函式

def func(x, y):

if x < y:

return y

else:

return x

ret = func(30, 20)

print(ret)

4、使用 max函式求字典的最大值

dic = 

def func(key):

return dic[key]

ret = max(dic, key=func) # 改變比較規則。最終返回的函式 字典的key值

print(ret)

使用匿名函式

ret = max(dic, key=lambda x: dic[x])

print(ret)

5、求 lst 中每乙個元素的平方值

lst = [1, 2, 4]

def square(num):

num2 = num * num

return num2

ret = map(square, lst) # 迭代器 1,4,16

for i in ret:

print(i)

用匿名函式求

ret = map(lambda num: num * num, lst)

for i in ret:

print(i)

6、過濾出列表中的所有奇數:

正常for迴圈

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

new_lst =

for i in lst:

if i % 2 == 1:

print(new_lst)

正常函式

def odd(num):

if num % 2 == 1:

return true

else:

return false

ret = filter(odd, lst)

print(list(ret))

使用匿名函式

ret = filter(lambda num: true if num % 2 == 1 else false, lst)

print(list(ret))

7、現有兩個元組((『a』),(『b』)),((『c』),(『d』)),請生成列表[,]

tup1 = (('a'), ('b'))

tup2 = (('c'), ('d'))

ret = zip(tup1, tup2)

lst =

ret2 = map(lambda tup: , ret)

for i in ret2:

print(i)

print(lst)

函式知識點

1.函式 函式就是一種封裝 2.定義函式 function 函式名 3.函式不會自動執行,需要被呼叫才可以執行 函式名 4.函式命名規則 與變數命名規則一致 1 以字母 開頭 2 可以包含數字 字母 3 區分大小寫 4 不能使用關鍵字和保留字 駝峰命名法 若名稱由多個單詞組成,則從第二個單詞開始,首...

函式知識點

今日主要內容 函式 一,函式的概念 函式就是對一些重複使用的功能的封閉 二,函式的組成部分 1,函式名 是程式使用函式的依據 2,函式體 是實現功能的具體 塊 3,函式返回值 功能實現的結果 4,函式引數 實現功能的條件 三,函式的定義 函式需要先定義,再呼叫 def 函式申明的關鍵字 例 def ...

建構函式知識點

1 建構函式必須與類名相同,並且不能有返回值 返回值也不能為void 若在建構函式前面加上void,編譯器會把它認為是方法,而不是建構函式 當然在new的時候,也不能自動呼叫 2 每個類可以有多個建構函式,如果人為定義了建構函式,編譯器不會建立預設的建構函式。3 建構函式在物件例項化的時候被自動呼叫...