网站建设建设哪家便宜,电子工程王牌专业,品牌策划与设计机构,wordpress 端口# 偏函数 创建一个新的函数#xff0c;指定我们要使用的函数的某个参数为固定的值#xff0c;这个新函数就是偏函数
def test(a, b, c, d1):print(a b c d)from functools import partial # 使用偏函数必须导入此模块newFunc partial(test, c5) # newFunc为偏函数… # 偏函数 创建一个新的函数指定我们要使用的函数的某个参数为固定的值这个新函数就是偏函数
def test(a, b, c, d1):print(a b c d)from functools import partial # 使用偏函数必须导入此模块newFunc partial(test, c5) # newFunc为偏函数它设定了test函数中c的值固定为5newFunc(1, 2) # 9 相当于 test(1,2,5,1)newFunc2 partial(test, 5, 6) # newFunc2为偏函数它设定了test函数中第一个参数的值固定为5newFunc2(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:x1def reduce_one(x):return x - 1
# 相当于 lambda x:x1def 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