内置函数与lambda匿名函数
生活随笔
收集整理的這篇文章主要介紹了
内置函数与lambda匿名函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
內置函數
匿名函數lambda
基本形式:
lambda: args : expression ,表達式的結果就是函數的return value
func = lambda x:x*2 func(2) # 也可以這樣來調用 lambda x : x < 3 # 返回True/Falsewhy lambda?
定義一個有名函數時def func():pass,只要名字不被刪除,就一直占著內存。如果只用一次,用完了還要del func。 但是lambda匿名函數,只是一個內存地址,沒有綁定變量名,會被回收。另外,簡單的函數用lambda寫更方便。
lambda和內置函數map, reduce, filter,max的應用
map 映射:map(函數, 序列)
map迭代序列,將元素傳給函數,將函數返回的結果組成map obj這個迭代器,可以用list或for循環來查看。
m = map(lambda x : x*2, [1, 2, 3, 4]) print(list(m)) # [2, 4, 6, 8]reduce 合并:reduce(函數,序列,初始值)
在python3中使用reduce函數需要 from functools import reduce 導入。
from functools import reduce print(reduce(lambda x,y : x+y, range(100))) # reduce循環序列的元素,讓函數每次接收兩個元素, # 返回的結果再和序列的下一個元素作累積計算filter 過濾:filter(函數,序列)
循環序列的元素,讓函數判定元素的bool值,如果為真,返回元素組成的filter obj 迭代器對象。
print(list(filter(lambda x : x > 0, [-3, -5, 2, 1]))) # [2, 1]max
用max函數找出一個字典中的最大值。
# 找出分數最高的那位同學 d = {'Ayhan': 100, 'Seb': 98, 'Tom': 97, 'Ronin': 98} res = zip(d.values(), d.keys()) # max() 遵循迭代器協議,如果傳入的字典,那么比較key的大小。所以用zip處理一下。 print(max(res)) # (100, 'Ayhan')max(dict, key=func) max函數中的key可以指定比較的對象。循環字典得到key,把字典key傳給key的函數處理后得到的返回值,再作比較。注意,max的key和字典的key不同。上面的栗子可以改寫:
d = {'Ayhan': 100, 'Seb': 98, 'Tom': 97, 'Ronin': 98} print(max(d, key = lambda x : d[x])) # Ayhan迭代器協議
很多內置函數都是遵循迭代器協議的,上面的函數:filter()、map()、reduce()、max()、min()、list()、for i in iterable。遵循迭代器協議的函數能對可迭代對象就行迭代。
總結
以上是生活随笔為你收集整理的内置函数与lambda匿名函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Linux内核设计与实现》读书笔记(十
- 下一篇: [置顶] hdu 1890 伸展树区间翻