匿名函數,內置函數

lambda

lambda 函數也叫匿名函數,也就是沒有名字的函數算法

lambda匿名函數的格式:冒號前是參數,能夠有多個,用逗號隔開,冒號右邊的爲表達式。其實lambda返回值是一個函數的地址,也就是函數對象。函數

一般和內置函數一塊兒使用code

lambda函數的特色和使用場景
特色對象

'''
從函數命名的角度:匿名,直接返回可供調用的值
從輸入輸出的角度:支持多個輸入參數,但只支持一個表達式
從函數功能的角度:結構簡單,無須定義函數名。但所能實現的功能也極其受限。
從訪問變量的角度:只支持訪問lambda本身定義的變量。不支持外部變量訪問
從運行效率的角度:lambda實際上仍開闢了一個內存單元,並無提高運行效率
'''

lambda函數複製給變量:減小函數定義的麻煩,同時支持代碼複用內存

add=lambda x,y:x+y
print(add(1,2))

將lambda函數做爲參數傳遞給其餘函數字符串

max

dict1 = {
    'tank': 1000,
    'egon': 500,
    'sean': 200,
    'jason': 500
}

# 獲取dict1中薪資最大的人的名字
# 字符串的比較: ASCII
print(max(dict1, key=lambda x: dict1[x]))

min

# 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)

內置函數

map()映射、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()合併

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過濾

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)
相關文章
相關標籤/搜索