zoukankan      html  css  js  c++  java
  • 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'))))))
  • 相关阅读:
    C# Distinct去重泛型List
    分布式高并发系统如何保证对外接口的幂等性?转载
    描述文件安装失败:Please ensure the provisioning profile is configured for this device. If not, please try to generate
    Java基础-概述
    Java基础-语法
    使用 Proxifier + Charles 抓取本机 Http请求 /
    Git回退服务器版本及receive.denyDeleteCurrent配置
    codeforces#1549D. Integers Have Friends
    NOI 2021 ~Last Celebration~
    docker
  • 原文地址:https://www.cnblogs.com/jiuyachun/p/10496087.html
Copyright © 2011-2022 走看看