Python高階函數
lambda匿名函數
- lambda只是一個表達式,函數體比def簡單很多。
- lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
- lambda表達式是起到一個函數速寫的作用。允許在代碼內嵌入一個函數的定義。
- 格式:lambda的一般形式是關鍵字lambda後面跟一個或多個參數,緊跟一個冒號,之後是一個表達式。
sum = lambda a,b : a+b
print(sum(1,2))
filter()函數 可以對序列做過濾處理
利用 filter、lambda表達式 獲取list1中元素小於33的所有元素 list1 = [11, 22, 33, 44, 55]
list1= [11,22,33,44,55]
a = filter(lambda x: x<33, list1)
print(list(a))
Map()函數 對序列根據設定條件進行操作後返回他設置的操作方法
利用map,lambda表達式將所有偶數元素加100
list1= [11,22,33,44,55]
ret = map(lambda x:x if x % 2 != 0 else x + 100,list1)
print(list(ret))
reduce() 化簡函數
- reduce()函數即爲化簡函數,它的執行過程爲:每一次迭代,都將上一次的迭代結果與下一個元素一同傳入二元func函數中去執行。
- 在reduce()函數中,init是可選的,如果指定,則作爲第一次迭代的第一個元素使用,如果沒有指定,就取seq中的第一個元素。
from functools import reduce
def f(x, y):
return x + y
print(reduce(f, [1, 3, 5, 7, 9]))
sorted()函數 對所有可迭代的對象進行排序操作。
sort 與 sorted 區別:
sort 是應用在 list 上的方法,sorted 可以對所有可迭代的對象進行排序操作。
list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。
a = sorted([5, 2, 3, 1, 4],reverse=True)
print(a)