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