• day16匿名函数


    匿名函数,好像也就是 lambda 表达式

    先来看一段函数,返回

    def func(n):
        return n * 3
    print(func(5))
    15

    用lambda表达式写:

    func = lambda n: n*3
    print(func(5))
    15

    匿名函数表达式:

    函数名 = lambda 参数:返回值
    
    # 参数可以有多个,用逗号隔开
    # 匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束的内容就是返回值
    # 返回值和正常的函数一样可以是任意数据类型

    练一练:

    def add(x,y):
        return x + y
    
    add = lambda x,y: x+y

    匿名函数的牛扳之处在于它真的可以匿名: 

    ### 假设我们想取到字典中,value最大的key是什么
    dic = {'k1':4,'k2':12,'k3':20,'k4':5} print(max(dic)) # 按照普通方法,我们只能取到key值 k4
    def func(k): return dic[k] print(max(dic,key=func)) # 此处定义一个函数,内置函数max()按照value值去取key # 转换成lambda匿名函数 ret = max(dic,key=lambda k:dic[k]) print(ret)
    k3

    可以与lamba 表达式合作的内置函数有,min,max,filter,map sorted等

    练一练2:

    1.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
    
    2.以下代码的输出是什么?请给出答案并解释。
    def multipliers():
        return [lambda x:i*x for i in range(4)]
    print([m(2) for m in multipliers()])
    请修改multipliers的定义来产生期望的结果。

     答案1分析:提到匿名函数就要想到内置函数

    # ret1 = zip((('a'),('b')),(('c'),('d')))     # zip()函数的拉索功能
    # # def func(tup):
    # #     return {tup[0]:tup[1]}
    # ret2 = map(lambda tup:{tup[0]:tup[1]},ret1)   # map()函数 以及 lambda表达式
    # print(list(ret2))
    # # ret3 = []
    # # for i in ret2:
    # #     ret3.append(i)
    # # print(ret3)
    ###最终答案
    print(list(map(lambda tup:{tup[0]:tup[1]},zip((('a'),('b')),(('c'),('d'))))))
  • 相关阅读:
    MIUI(Android)使用Webview上传文件
    使用EntityFramework中DbSet.Set(Type entityType)方法碰到的问题
    Web文件管理:elFinder.Net(支持FTP)
    ASP.NET 根据现有动态页面生成静态Html
    LaTeX学习
    Java Integer剖析
    20140711 loop
    20140711 eat
    20140711 set
    20140710 loop
  • 原文地址:https://www.cnblogs.com/jiuyachun/p/10496087.html
Copyright © 2020-2023  润新知