zoukankan      html  css  js  c++  java
  • 匿名函数以及与内置函数之间的配合使用

    """
    匿名函数
    匿名指的就是没有名字
    其最明显的特点就是,
    有名字的值可以多次使用,多次访问
    而没有名字的值,只能临时使用一次,用完就没了
    匿名函数与有名函数的区别
    参数不需要括号,并且支持所有类型的参数
    名称空间与作用域关系完全相同
    关键字为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)


  • 相关阅读:
    Iscroll4使用心得 (转)
    请求接口数据实例
    jQuery插件开发全解析(转)
    js中可以改变作用域的三种方式(改变this)
    this基础(转)
    Hash扫盲
    JS编码解码 (转)
    自定义菜单实例
    DOM(转)
    js扫盲
  • 原文地址:https://www.cnblogs.com/tangda/p/10591962.html
Copyright © 2011-2022 走看看