匿名函式,內建函式

2021-09-02 11:49:08 字數 3398 閱讀 6639

lambda函式是一種快速定義單行的最小函式,可以用在任何需要函式的地方

一般函式定義

def fun(x,y)

return x*y

匿名函式lambda定義

r = lambda x,y:x*y

print r(2,3)

格式:

lambda 引數列表:return [表示式] 變數

#lambda語句中,冒號前是函式,可以有多個,逗號隔開,冒號左邊是返回值
由於lambda返回的是函式物件(構建的是乙個函式物件),所以需要定義乙個變數去接收

匿名函式優點:

- 使用python寫一些指令碼時,使用lambda可以省去定義函式的過程,讓**更加精簡。

- 對於一些抽象的,不會被別的地方再重複使用的函式,有時候函式起個名字也是個難題,使用lambda不需要考慮命名的問題

- 使用lambda在某些時候然後**更容易理解

搭配reduce的應用

reduce(fun,list)

reduce依次把list中的數字賦值給fun進行計算

注意fun必須是連個數字間的運算,list必須是整型數字

相關參考鏈結

python 內建函式

python 資料型別轉換

python官方文件

大神簡化整理

內建函式,python內建的函式(build in function),不需要引用其他包,一般成為bif

abs()

計算絕對值,abs(-10),接收number,返回乙個number

max()

求序列的的最大值(可迭代的),同時也可以比較一些數字

min()

求序列的最小值(可迭代的),同時也可以比較一些數字

len()

求序列的長度,(字典也可以,求index的個數)

divmod(x,y)

求x,y的商和餘數,存放在元組中

pow(x,y,z)

求x的y次方,如果有第三個引數,那麼把前面的結果和第三個引數求餘

round(number)

用來四折五入,後面可以跟精度(先把number程式設計浮點數,然後看保留幾位)

例子:把12.45轉換成float,那麼就不是12.45了,而可能是12.4999999了

callable()

判斷乙個物件是否是可呼叫的,比如函式,類都是可以呼叫的,但是變數無法呼叫

type()

檢視物件的型別

isinstance(物件,型別)

判斷乙個物件是否是給定型別。型別可以是多個,只要是其中1個即可(型別1,型別2)

a='213'

isinstance(a,str)

返回true

cmp(x,y)

比較兩個物件的大小,x大於y返回1,x等於y返回-1,x小於y返回-1,字串也可以比較,是按單個字元的大小開始比對。

str()

可以把任何資料轉換成字串(字典,元組,也會直接輸出)

hex(10)

把10進製轉換為8進製

eval()

把字串當做乙個有效的表示式來求值

eval('1+2') 返回3

eval("[1,2,3]") 返回[1,2,3]

oct()

把10進製轉換為8進製

chr(i)

i的範圍是0~255,求i對應的acsii碼值

ord(i)

i的範圍是ascii的值,求對應的值

a.capitalize()

對字串a進行首字母大寫,首字母是數字則不變

a.replace(old,new,[count])

把舊的字串,替換為新的字串,count 可以去指定替換幾次

a.split(分隔符,[切幾次])

把字串進行分隔,返回的是乙個列表,預設是空格或tab鍵分隔(有幾個空格無所謂,全都當成1個)

分隔符.join(可迭代的物件)

返回乙個字串,把可迭代的物件轉連線成字串,用分隔符來分隔

string.lowercase

string.uppercase

列印所有的大小寫的字母

string.capitalize(『hello』)

把第乙個字串替換為大寫

string.replce(『hello』,『l』,『a』)

把hello中的,l替換為a

filter(函式或空,序列)

用來過濾,把序列的每乙個元素,交給函式來處理。如果為none,則什麼也不做,直接輸出(序列),如果有函式,那麼只有函式的返回值為true才列印序列中的元素

例子:

def even(n):

if n % 2 == 0:

return true

filter(even,xrange(10))

[0, 2, 4, 6, 8]

高階寫法:

filter(lambda x: x%2 ==0,xrange(10)
zip(seq1,seq2,seqn…)

把seq1和seq2組合成1個大的列表,每個序列取1個組成元組,存放在整合後的列表中,如果序列的長度不同,那麼就以最小的序列的長度為基準。

map(func,seq1,seq2)

返回也是乙個列表,func可以是乙個函式也可以是個none,如果為none,那麼返回的列表長度以當前最長列表為基準,依舊是依次去每個列表中去取,只不過沒有的,用none補充

例子:

l1 = [1, 2, 3]

l2 = ['a', 'b', 'c', 'd']

l3 = ['i', 'ii', 'iii', 'iv', 'v', 'vi']

map(none,l1,l2,l3)

[(1, 'a', 'i'),

(2, 'b', 'ii'),

(3, 'c', 'iii'),

(none, 'd', 'iv'),

(none, none, 'v'),

(none, none, 'vi')]

如果函式位上是乙個函式,那麼如果只有1列表,那麼就需要這個函式定義1個引數,然後每次把列表中的1個元素交給函式進行處理,並列印

如果需要處理兩個序列,那麼函式就必須定義2個引數,去接受這兩個序列的元素。

高階應用:

map(lambda x,y:x+y,l1,l4)
reduce(func,seq)

只能定義1個序列,然後傳遞給func進行處理。(lambda函式求累加)

匿名函式,內建函式

匿名函式,他沒有繫結名字,使用一次即被收回,加括號既可以執行。lambda x,y x y 報錯 res lambda x,y x y 1,2 print res 不報錯 1.bytes 解碼字元 2.chr ord ascii 數字轉為字元 字元轉化為數字 3.divmod 分別取商和餘數 4.e...

匿名函式及內建函式

1.lamda匿名函式 a lambda x x x print a 6 不需要def宣告,一句話就可以宣告出來乙個函式 注意 1.函式的引數可以有多個,多個引數之間用逗號隔開 2.匿名函式不管多複雜,只能寫一行,邏輯結束後直接返回資料 2.sorted 排序函式 sorted iterable,k...

匿名函式和內建函式

lambda 1 ps 冒號左邊時引數,右邊是返回值 因為沒有名字,而函式的呼叫就是通過函式名 的 匿名函式單獨使用毫無意義,它是配合內建函式一起使用 匿名函式需要一次性使用 max 最大值 max 可迭代物件 min 最小值 min 可迭代物件 l1 1,2,3,4,5 列印出l1列表中最大的值 ...