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內建的函式(build in function),不需要引用其他包,一般成為bifpython 內建函式
python 資料型別轉換
python官方文件
大神簡化整理
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列表中最大的值 ...