偏函数 匿名函数 高阶函数 map filter reduce
生活随笔
收集整理的這篇文章主要介紹了
偏函数 匿名函数 高阶函数 map filter reduce
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# 偏函數 創建一個新的函數,指定我們要使用的函數的某個參數為固定的值,這個新函數就是偏函數
def test(a, b, c, d=1):print(a + b + c + d)from functools import partial # 使用偏函數必須導入此模塊
newFunc = partial(test, c=5) # newFunc為偏函數,它設定了test函數中c的值固定為5
newFunc(1, 2) # 9 相當于 test(1,2,5,1)
newFunc2 = partial(test, 5, 6) # newFunc2為偏函數,它設定了test函數中第一個參數的值固定為5
newFunc2(10, 2) # 23 相當于 test(5,6,10,2) # 匿名函數 使用lambda關鍵字,通常與其它函數配合使用
# 返回單個值
print((lambda x, y, z: x + y + z)(1, 2, 3))
# 返回多個值
print((lambda x, y, z: (x + y + z, x + 1, y + 1, z + 1))(1, 2, 3))# 高階函數(以下兩個特性滿足一個即為高階函數)
# 1函數的傳入參數是一個函數名
# 2函數的返回值是一個函數名# 例對列表進行加一或減一或平方,并返回結果
def add_one(x):return x + 1
# 相當于 lambda x:x+1def reduce_one(x):return x - 1
# 相當于 lambda x:x+1def square(x):return x ** 2
# 相當于 lambda x:x**2
list1 = [1, 2, 3, 4, 5]
list2 = [11, 21, 32, 43, 54]def calc(func, list):res = []for i in list:r = func(i) # 這里調用了傳入的函數
res.append(r)return resprint(calc(reduce_one, list1))
print(calc(lambda x: x - 1, list2))# map函數:對可迭代對象的每個元素依次處理,返回依次處理后的結果
# 以上的calc函數的功能就是python中內置map函數的功能
# map函數的第一個參數可以是匿名函數,也可是自定義函數
# map函數的第二個參數是一個可迭代對象
result = list(map(lambda x: x - 1, list2)) # 將map執行返回的結果轉為列表
print(result)# 例 取出電影院里名字結尾有sb的觀眾
movie_people = ['alex_sb', 'wu_sb', 'zhang_sb', '張三']def filter_test(func, array):ret = []for p in array:if func(p):ret.append(p)return retprint(filter_test(lambda n: n.endswith('sb'), movie_people))# filter函數:對可迭代對象的每個元素篩選處理,返回篩選后的結果
# 以上的filter_test函數就是python中內置filter函數的功能
# filter函數的第一個參數可以是匿名函數,也可是自定義函數
# filter函數的第二個參數是一個可迭代對象
result = list(filter(lambda n: n.endswith('sb'), movie_people)) # 將map執行返回的結果轉為列表
print(result)# 通過以上兩個例子,在python中還有類似的一個函數reduce
# reduce函數:對可迭代對象的每個元素合并處理,返回一個值
# 使用reduce,必須from functools import reduce
# reduce函數的第一個參數可以是匿名函數,也可是自定義函數
# reduce函數的第二個參數是一個可迭代對象
# reduce函數的第三個參數是初始值,也可以不寫
# 例 將列表中的所有數字相乘得到結果
from functools import reduce
num_list = [1, 2, 4, 11]
print(reduce(lambda x, y: x * y, num_list, 1))# 例 計算1-100的和
print(reduce(lambda x, y: x + y, range(1,101)))
?
轉載于:https://www.cnblogs.com/dangrui0725/p/9416630.html
總結
以上是生活随笔為你收集整理的偏函数 匿名函数 高阶函数 map filter reduce的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UDS诊断
- 下一篇: 图像坐标:我想和世界坐标谈谈(B)