匿名函数

Eva_J

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

  1. #这段代码
  2. def calc(n):
  3. return n**n
  4. print(calc(10))
  5.  
  6. #换成匿名函数
  7. calc = lambda n:n**n
  8. print(calc(10))

上面是我们对calc这个匿名函数的分析,下面给出了一个关于匿名函数格式的说明

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

我们可以看出,匿名函数并不是真的不能有名字。

匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了~~~

  1. 请把以下函数变成匿名函数
  2. def add(x,y):
  3. return x+y
  4.  
  5. add = lambda x,y:x+y
  6. print(add(1,2))

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

  1. l=[3,2,100,999,213,1111,31121,333]
  2. print(max(l))
  3.  
  4. dic={'k1':10,'k2':100,'k3':30}
  5. print(max(dic)) # k3 #默认取的是key的最大值
  6.  
  7. dic={'k1':10,'k2':100,'k3':30}
  8. def func(key):
  9. return dic[key]
  10. print(max(dic,key=func)) #根据返回值判断最大值,返回值最大的那个参数是结果
  11.  
  12. print(dic[max(dic,key=lambda k:dic[k])])
  1. dic={'k1':10,'k2':100,'k3':30}
    def func(key):
    return dic[key]
    print(max(dic,key=func)) #根据返回值判断最大值,返回值最大的那个参数是结果
  2.  
  3. dic={'k1':10,'k2':100,'k3':30}
    def func(key):
  4.  
  5. return max(key)
    print(func(dic.values()))
  1. res = map(lambda x:x**2,[1,5,7,4,8])
  2. for i in res:
  3. print(i)
  4.  
  5. 输出
  6. 25
  7. 16
  1. res = filter(lambda x:x>10,[5,8,11,9,15])
  2. for i in res:
  3. print(i)
  4.  
  5. 输出
  6. 15

面试题:

  1. 1.下面程序的输出结果是:
  2. d = lambda p:p*2
  3. t = lambda p:p*3
  4. x = 2
  5. x = d(x)
  6. x = t(x)
  7. x = d(x)
  8. print x
  9.  
  10. 2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
  11.  
  12. 3.以下代码的输出是什么?请给出答案并解释。
  13. def multipliers():
  14. return [lambda x:i*x for i in range(4)]
  15. print([m(2) for m in multipliers()])
  16. 请修改multipliers的定义来产生期望的结果。
  17.  
  18. 练习
  1. max([1,2,3,4,5,-6,-7],key=abs)
  2.  
  3. ret = map(abs,[-1,2,-3,4])
  4. for i in ret:
  5. print(i)
  6.  
  7. def func(x):
  8. return x**2
  9. ret = map(func,[-1,2,-3,4])
  10. for i in ret:
  11. print(i)
  12.  
  13. ret = map(lambda x:x**2,[-1,2,-3,4])
  14.  
  15. def func(x):
  16. return x>10
  17.  
  18. res = filter(func,[5,8,11,9,15])
  19. for i in res:
  20. print(i)
  21.  
  22. # min max filter map sorted —— lambda

面试题:

  1. 1.下面程序的输出结果是:
  2. d = lambda p:p*2
  3. t = lambda p:p*3
  4. x = 2
  5. x = d(x)
  6. x = t(x)
  7. x = d(x)
  8. print x #24

  9. 2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
  1. ret = zip((('a'),('b')),(('c'),('d')))
  2. print(ret)
  3. for i in ret:
  4. print(i)
  5.  
  6. ret = zip((('a'), ('b')), (('c'), ('d')))
  7. def func(tup):
  8. return {tup[0]:tup[1]}
  9. res = map(func, ret)
  10. print(list(res))
  11.  
  12. ret = zip((('a'), ('b')), (('c'), ('d')))
  13. ret = map(lambda t:{t[0]:t[1]},ret)
  14. print(list(ret))
  1. print(list(map(lambda t:{t[0]:t[1]},zip((('a'), ('b')), (('c'), ('d'))))))
  1.  
  1.  
  2. 3.以下代码的输出是什么?请给出答案并解释。
  3. def multipliers():
  4. return [lambda x:i*x for i in range(4)]
  5. print([m(2) for m in multipliers()])
  6. 请修改multipliers的定义来产生期望的结果。
  1. def multipliers():
  2. return [lambda x:i*x for i in range(4)]
  3. print([m(2) for m in multipliers()])
  4.  
  5. def multipliers():
  6. return (lambda x:i*x for i in range(4))
  7. print([m(2) for m in multipliers()])
  8.  
  9. # [6, 6, 6, 6]
  10. # [0, 2, 4, 6]
  1.  

Python_匿名函数_47的更多相关文章

  1. Python_匿名函数

    匿名函数:为了解决那些功能很简单的需求而设计的一句话函数. 代码如下: 1 正常函数: 2 3 def calc(n): 4 5 return n ** n 6 7 print(calc(10)) 8 ...

  2. Python_内置函数和匿名函数

    楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...

  3. 冒泡,setinterval,背景图的div绑定事件,匿名函数问题

    1.会冒泡到兄弟元素么? $(function(){ $("#a").click(function(){alert("a")}) $("#b" ...

  4. Javascript之匿名函数

    分析: 1.所谓匿名函数,从字面意思理解,就是没有名字的函数,js 用()来代替(注意,是英文状态下的括号) 2.定义形式: function (){ //to add codes that you ...

  5. 巧用javascript对象属性,向事件绑定的匿名函数内传递循环控制变量的值

    遇到一个需要向匿名函数传递循环控制变量的问题,我受到园子里这篇文章的启发[笔记]js获取当前点击元素的索引,解决了这个问题.现在把代码贴出来,以防止自己忘记. if ($('#labModal').l ...

  6. 浅析匿名函数、lambda表达式、闭包(closure)区别与作用

    浅析匿名函数.lambda表达式.闭包(closure)区别与作用 所有的主流编程语言都对函数式编程有支持,比如c++11.python和java中有lambda表达式.lua和JavaScript中 ...

  7. 委托,匿名函数和lambda表达式

    很早之前就接触到了委托,但是一直对他用的不是太多,主要是本人是菜鸟,能写的比较高级的代码确实不多,但是最近在看MSDN微软的类库的时候,发现了微软的类库好多都用到了委托,于是决定好好的研究研究,加深一 ...

  8. Javascript自执行匿名函数(function() { })()的原理分析

    匿名函数指没有指定函数名或指针的函数,自执行匿名函数只是其中一种,下文中称这种函数为:自执行函数 下面是一个最常见的自执行函数: // 传统匿名函数 (function() { alert('hell ...

  9. 一篇关于匿名函数(function(){})()不错的文章

    代码如下: (function(){ //这里忽略jQuery所有实现 })(); (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他 ...

随机推荐

  1. selenium-获取一组数组进行操作(七)

    selenium-获取一组数组进行操作 以  纵横中文网  中获取24小时畅销榜的书单为例 此文仅做 selenium 在自动化测试中怎么获取一组数据进行说明,不做网络爬虫解释 当然,使用爬虫得到本文 ...

  2. sql 语句按字段指定值排序及分页

    为特定字段赋值并排序 表[Table_temp]中列[col1]为字符,属性为varchar(),排序时需要按照B.A.C的顺序显示,则可按照以下SQL语句: select * from Table_ ...

  3. sqlServer 获取最新的一条数据

    SQL语句获取最新一条的数据 * from tra.dbo.订单 order by 下单时间 desc --时间倒序排列取第一条 select * from tra.dbo.订单 where 下单时间 ...

  4. 变量查询,运算符优先级,if语句

    1.三个关联表的查询 use 新建 create table teacher(tcode int primary key,lesson char(10),age int,birth datetime) ...

  5. SQL2008无法附加数据库,提示“无法显示请求的对话框”(nColIndex实际值是-1)图文解决方法

    SQL2008无法附加数据库,提示“无法显示请求的对话框”(nColIndex实际值是-1)图文解决方法 SQL2008无法附加数据库,提示“无法显示请求的对话框”(nColIndex实际值是-1)图 ...

  6. Alwayson查询主副本不同的JOB,Linkserver,Login

    DECLARE @SQL AS VARCHAR(5000), @Primary AS VARCHAR(50), @Secondy AS VARCHAR(50); SELECT @Primary='AA ...

  7. 看到一个想收藏的的AJAX小列子

    用户登录的验证可以使用 form 表单提交,也可以使用 ajax 技术异步提交. AJAX 即 Asynchronous Javascript And XML(异步 JavaScript 和 XML) ...

  8. #006 C语言大作业学生管理系统第三天

    还差最后两部分 读取文件 恢复删除的学生信息 先学会处理文件的 知识点,再继续跟着视频做这个作业. 应该明天周六能把视频里手把手教的学生管理系统敲完 第二周尽量自己能完成C语言课本最后面那道学生管理系 ...

  9. python 浅谈字典dict

    一.字典简介 字典(dict)是python中唯一的映射类型,他是以{ }括起来的键值对组成,在dict中的key是唯一的.在保存的时候,根据key来计算出一个内存地址.然后将key-value保存在 ...

  10. docker pull下载镜像报错Get https://registry-1.docker.io/v2/library/centos/manifests/latest:..... timeout

    使用docker pull从镜像仓库拉取镜像时报错如下:[root@docker-registry ~]# docker pull centosUsing default tag: latestTry ...