• 匿名函数lambda及面试题三道


    # 函数名 = lambda 参数 :返回值。       匿名函数只是函数,如果要通过可迭代对象给匿名函数传参,就需要使用 map 或者 filter
    calc = lambda n:n**n                     calc(1)
    clac2 = lambda x,y:x+y            calc2(1,2) 参数可以有多个,用逗号隔开 匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值 返回值和正常的函数一样可以是任意数据类型 求最大value的key dict
    = {'k1':10,'k2':100,'k3':30} print(max(dict)) print(max(dict,key=lambda k:dict[k])) 内置方法中带key的有 max min filter map sorted,都可以和lambda合作

    面试题:

    #做面试题的时候,要多想想考什么,比如生成器,迭代器,装饰器必考,多想想是不是考这些
    #!!!!!!!!!!!!!!!考匿名函数,其实就是为了考内置函数  max  min  filter  map  sorted
    #第一题读代码
    d = lambda q:q*2
    t = lambda t:t*3
    x = 2
    x = d(x)
    x = t(x)
    x = d(x)
    print(x)
    
    #第二题,现有两元组(('a'),('b')),(('c'),('d')),
    #清用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
    ret = zip((('a'),('b')),(('c'),('d')))
    # def func(tup):
    #     return {tup[0]:tup[1]}
    res = map(lambda tup:{tup[0]:tup[1]},ret)
    print(list(res))
    
    #第三题,以下代码的输出是什么?
    def multipliers():
        ret = [lambda x:i*x for i in range(4)]
        return ret
    
    print([m(2) for m in multipliers()])
    #multipliers() 运行完 返回值是  [lambda x:i*x for i in range(4)]
    #这个匿名函数 此时是有运行的,可以理解成运行了四次lambda x:i*x
    #[lambda x:i*x  lambda x:i*x  lambda x:i*x  lambda x:i*x]
    #但是运行完了四次,此时 i == 3  所以当 m(2)给匿名函数传值的时候,输出结果就为[6,6,6,6]
    #若想达到预期结果,只要把 返回值改为  (lambda x:i*x for i in range(4)),让它变成生成器表达式
    #此时调用multipliers函数并不会运行,只有当 m(2)执行一次for循环才会运行一次
  • 相关阅读:
    CSS学习笔记(二)选择器
    CSS学习笔记(九)对列表应用样式和创建导航条
    在Eclipse中用远程svn资源库创建项目并提交和更新
    CSS学习笔记(六)圆角框
    CSS学习笔记(五)背景图基础
    SVN创建资源库和远程连接配置
    Struts2标签中支持OGNL表达式的热计算及带参数的<s:a>链接
    php处理字符串格式的计算公式
    CSS学习笔记(十)对表单和数据表格使用样式
    CSS学习笔记(三)层叠和特殊性
  • 原文地址:https://www.cnblogs.com/gkx0731/p/9558295.html
Copyright © 2020-2023  润新知