匿名函数以及与内置函数之间的配合使用

"""
匿名函数
匿名指的就是没有名字
其最明显的特点就是,
有名字的值可以多次使用,多次访问
而没有名字的值,只能临时使用一次,用完就没了
匿名函数与有名函数的区别
参数不需要括号,并且支持所有类型的参数
名称空间与作用域关系完全相同
关键字为lambda
函数体中不能写return ,会自动将执行结果返回
函数体只能有一个表达式且不能换行
匿名函数什么时候使用
当你的函数的函数体只有一行表达式时并且仅使用一次时就可以作为匿名函数
更多的是与内置函数联用,(max,min,sorted,map,filter,reduce)

"""
# a = 10
# print(a)
# print(a)
# print(a)
# print(a)
# print(a)
# print(10)

# def func():
# print("func run!")
# func()
# func()
# def my_max(a,b):
# return a if a > b else b
#
# f1 = lambda a,b=1:a if a > b else b
#
# print(f1(1,200))


li = [1,3,4,2,5,8,9]
# 求最大值
# def my_max(li):
# max = li[0]
# for i in li:
# if i > max:
# max = i
# return max
#
# print(my_max(li))

print(max(li))
salary = {
"egon":250,
"zgon":500,
"bgon":20000,
}

print(max(salary,key=lambda k:salary[k]))
print(min(salary,key=lambda k:salary[k]))

# def max_s(dic,func):
# max_key = list(dic.keys())[0]
# max_value = dic[max_key]
# for k in dic:
# if max_value < func(k):
# max_value = dic[k]
# max_key = k
# return max_key
#
# print(max_s(salary,lambda k:salary[k]))
匿名函数的使用与内置函数的结合使用
# li = [1,23,4,5,6,6,7]
#
# print(max(li))
#

# salary = {
# "egon":250,
# "zgon":500,
# "bgon":20000,
# }
# 当默认的比较方式无法满足需求是 就可以通过传入一个函数来决定用什么比较
# 函数可以是匿名也可以是有名的,很明显这时候匿名函数更好
# print(max(salary,key=lambda k:salary[k]))
# print(min(salary,key=lambda k:salary[k]))

# def get_value(k):
# return salary[k]
# # 使用有名函数完成取值
# res = max(salary,key=get_value)
#
# # 使用匿名函数
# res = max(salary,key=lambda k:salary[k])
# print(res)
# # 匿名函数求最小值
# print(min(salary,key=lambda k:salary[k]))

# 排序
# li = [1,23,4,5,6,6,7]
# res = sorted(li,reverse=True)
# print(res)
#
# # salary = {
# "egon":250,
# "zgon":500,
# "bgon":20000,
# }
#
# res = sorted(salary,key=lambda k:salary[k])
# # 得到工资最高钱
# print(res[-1],salary[res[-1]])
# print(res)


# map映射 filter过滤 reduce合并

# map 用于从一个可迭代对象中取出所有数据,进行一系列操作后 在放回新列表中
# li = [1,2,3,4,5]
#
# def f(v):
# print(v)
# return v + 100

# res = map(f,li)
# res = map(lambda v:v+100,li)
# print(list(res))
#
# names = ["agon","bgon","cgon"]
# res = map(lambda v:v+".MP3",names)
# print(list(res))


# li = [10,20,30,40]
# # filter 过滤
# res = filter(lambda v:True if v > 18 else False,li)
# print(list(res))

# filter 用于从一堆数据中过滤一些不满足条件的数据,提供一个函数,要函数的返回值是bool类型 True表示要保留,False就过滤掉
# names = ["agon","bgon","cgon","blex","jerry"]
# # filter 过滤
# res = filter(lambda v:True if not v.endswith("gon") else False,names)
# print(list(res))

# 从functools中拿到一个reduce
from functools import reduce

#reduce 是把列表中的数据进行合并 每次会传给你两个值 n 和n+1个
se = ["a","b","c"]
def f(a,b):
print(a,b)
return a+b

res = reduce(f,se)
print(res)


转载于:https://www.cnblogs.com/tangda/p/10591962.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值