目錄python
lambda 函數也叫匿名函數,也就是沒有名字的函數算法
lambda匿名函數的格式:冒號前是參數,能夠有多個,用逗號隔開,冒號右邊的爲表達式。其實lambda返回值是一個函數的地址,也就是函數對象。函數
一般和內置函數一塊兒使用code
lambda函數的特色和使用場景
特色對象
''' 從函數命名的角度:匿名,直接返回可供調用的值 從輸入輸出的角度:支持多個輸入參數,但只支持一個表達式 從函數功能的角度:結構簡單,無須定義函數名。但所能實現的功能也極其受限。 從訪問變量的角度:只支持訪問lambda本身定義的變量。不支持外部變量訪問 從運行效率的角度:lambda實際上仍開闢了一個內存單元,並無提高運行效率 '''
lambda函數複製給變量:減小函數定義的麻煩,同時支持代碼複用內存
add=lambda x,y:x+y print(add(1,2))
將lambda函數做爲參數傳遞給其餘函數字符串
dict1 = { 'tank': 1000, 'egon': 500, 'sean': 200, 'jason': 500 } # 獲取dict1中薪資最大的人的名字 # 字符串的比較: ASCII print(max(dict1, key=lambda x: dict1[x]))
# dict1 = { # 'tank': 100, # 'egon': 500, # 'sean': 200, # 'jason': 50 # } # # new_list = ['egon', 'sean', 'tank', 'jason'] # new_list = sorted(dict1, key=lambda x: dict1[x], reverse=True) # print(new_list)
python中的map()函數是一個內置的函數,通常用法是map(function, iterable)。it
須要傳入一個函數,這個函數能夠是內置的,也能夠是本身定義,也能夠是匿名函數。第二個參數是一個可迭代對象,如列表,字符串等等。返回的是一個map對象,注意不是列表不能直接輸出,能夠經過for循環或者list()來顯示io
map() 會根據提供的函數對指定序列作映射。用前面的函數,依次映射執行後面的可迭代對象for循環
l = ['qwe','eqwed','eqweddf','ewq'] res = map(lambda x : '666' + x,l) for i in res: print(i) res = map(lambda a : a + '.jpg' if a[-1] != 'd' else a,l) for i in res: print(i)
reduce()函數在庫functools裏,若是要使用它,要從這個庫裏導入
from functools import reduce
reduce函數與map函數有不同地方,map操做是並行操做,reduce函數是把多個參數合併的操做,也就是從多個條件簡化的結果,在計算機的算法裏,大多數狀況下,就是爲了簡單化
from functools import reduce a = reduce(lambda x,y: x+y,[1,2,3,4]) print(a) #10
filter() 函數用於過濾序列,過濾掉不符合條件的元素,返回由filtre對象。
該接收兩個參數,第一個爲函數,第二個爲序列,序列的每一個元素做爲參數傳遞給函數進行判,而後返回 True 或 False,最後將返回 True 的元素放到新列表中。
filter(function, iterable)
l = [1,2,3,4,5,6,7,8,8] nl = filter(lambda x:x % 2 == 0,l) for i in nl: print(i)