• 匿名函数


    匿名函数

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

    #这段代码
    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

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

    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])])
    res = map(lambda x:x**2,[1,5,7,4,8])
    for i in res:
        print(i)
    
    输出
    1
    25
    49
    16
    64
    res = filter(lambda x:x>10,[5,8,11,9,15])
    for i in res:
        print(i)
    
    输出
    11
    15

    面试题练一练

    现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

    #答案一
    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)])
    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的定义来产生期望的结果。

    本章小结

    重点掌握:

    其他:input,print,type,hash,open,import,dir

    str类型代码执行:eval,exec

    数字:bool,int,float,abs,divmod,min,max,sum,round,pow

    序列——列表和元组相关的:list和tuple

    序列——字符串相关的:str,bytes,repr

    序列:reversed,slice

    数据集合——字典和集合:dict,set,frozenset

    数据集合:len,sorted,enumerate,zip,filter,map

    参考文档:

      https://docs.python.org/3/library/functions.html#object

  • 相关阅读:
    luogu P1877 [HAOI2012]音量调节
    luogu P1510 精卫填海
    luogu P1508 Likecloud-吃、吃、吃
    我的VIM
    luogu P1310 表达式的值
    luogu P1402 酒店之王
    luogu P3119 [USACO15JAN]草鉴定Grass Cownoisseur
    luogu P1879 [USACO06NOV]玉米田Corn Fields
    luogu P2746 [USACO5.3]校园网Network of Schools
    [BZOJ4870][六省联考2017]组合数问题(组合数动规)
  • 原文地址:https://www.cnblogs.com/qunxiadexiaoxiangjiao/p/8204655.html
Copyright © 2020-2023  润新知