zoukankan      html  css  js  c++  java
  • Python— 匿名函数

    匿名函数

    匿名函数:为了解决那些功能很简单的需求而设计的  “一句话函数”

    #初始代码
    def calc(n):
        return n**n
    print(calc(10))
     
    #换成匿名函数
    calc = lambda n:n**n
    print(calc(10))

    上图是对calc这个匿名函数的分析

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

    由此可见:

    匿名函数并不是真的没有名字。

    匿名函数的调用和正常的调用也没有什么分别。 

    # 把以下函数变成匿名函数
    def add(x,y):
        return x+y
    
    
    # 匿名函数
    add = lambda x,y : x+y
    匿名函数练习

    上面是匿名函数的函数用法。

    除此之外,匿名函数也不是浪得虚名。在和其他功能函数合作的时候~~~它真的可以匿名

    l=[3,2,100,999,213,1111,31121,333]
    print(max(l))
    
    dic={'k1':10,'k2':100,'k3':30}
    
    
    print(max(dic))
    print(dic[max(dic,key=lambda k:dic[k])])
    
    # 执行结果:
    31121
    k3
    100
    
    Process finished with exit code 0
    匿名函数与 max 混用
    res = map(lambda x:x**2,[1,5,7,4,8])
    for i in res:
        print(i)
    
    # 执行结果
    1
    25
    49
    16
    64
    匿名函数与 map 混用
    res = filter(lambda x:x>10,[5,8,11,9,15])
    for i in res:
        print(i)
    
    
    
    # 执行结果
    11
    15
    匿名函数与 filter 混用
    '''
    1.下面程序的输出结果是:
    d = lambda p:p*2
    t = lambda p:p*3
    x = 2
    x = d(x)
    x = t(x)
    x = d(x)
    print x
    '''
    
    '''
    2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
    '''
    
    '''
    3.以下代码的输出是什么?请给出答案并解释。
    def multipliers():
        return [lambda x:i*x for i in range(4)]
    print([m(2) for m in multipliers()])
    请修改multipliers的定义来产生期望的结果。
    '''
    面试题:匿名函数
    # 第一题 
       24
    
    Process finished with exit code 0
    
    
    
    # 第二题
    t1 = (('a'), ('b'))
    t2 = (('c'), ('d'))
    t3 = zip(t1, t2)
    print(list(lambda t : {t[0] : t[1]}, t3))
    
    
    # 第三题
    # 答案一
    test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
    print(test(t1,t2))
    # 答案二
    print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
    # 答案三
    print([{i:j} for i,j in zip(t1,t2)])
    答案——面试题: 匿名函数
  • 相关阅读:
    数据分析三剑客 numpy,oandas,matplotlib(2)
    数据分析三剑客 numpy,oandas,matplotlib
    爬虫 crawlSpider 分布式 增量式 提高效率
    RestTemplate:带 header 的 get 请求
    Java:md5 摘要
    Java:Base64 编码
    Java:将字符串转换为枚举
    RestTemplate:使用 Map 传递参数
    Spring cloud:网关-Zuul路由
    Spring cloud:熔断器-Hystrix Dashboard
  • 原文地址:https://www.cnblogs.com/bigtreei/p/7819594.html
Copyright © 2011-2022 走看看