匿名函数

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

  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. # 关于匿名函数格式的说明
  2.  
  3. 函数名 = lambda 参数 :返回值(相当于函数体)
  4.  
  5. # 参数可以有多个,用逗号隔开
  6. # 匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
  7. # 返回值和正常的函数一样可以是任意数据类型

由此可见:

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

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

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

匿名函数练习

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

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

  1. l=[3,2,100,999,213,1111,31121,333]
  2. print(max(l))
  3.  
  4. dic={'k1':10,'k2':100,'k3':30}
  5.  
  6. print(max(dic))
  7. print(dic[max(dic,key=lambda k:dic[k])])
  8.  
  9. # 执行结果:
  10. 31121
  11. k3
  12. 100
  13.  
  14. Process finished with exit code 0

匿名函数与 max 混用

  1. res = map(lambda x:x**2,[1,5,7,4,8])
  2. for i in res:
  3. print(i)
  4.  
  5. # 执行结果
  6. 1
  7. 25
  8. 49
  9. 16
  10. 64

匿名函数与 map 混用

  1. res = filter(lambda x:x>10,[5,8,11,9,15])
  2. for i in res:
  3. print(i)
  4.  
  5. # 执行结果
  6. 11
  7. 15

匿名函数与 filter 混用

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

面试题:匿名函数

  1. # 第一题
  2. 24
  3.  
  4. Process finished with exit code 0
  5.  
  6. # 第二题
  7. t1 = (('a'), ('b'))
  8. t2 = (('c'), ('d'))
  9. t3 = zip(t1, t2)
  10. print(list(lambda t : {t[0] : t[1]}, t3))
  11.  
  12. # 第三题
  13. # 答案一
  14. test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
  15. print(test(t1,t2))
  16. # 答案二
  17. print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
  18. # 答案三
  19. print([{i:j} for i,j in zip(t1,t2)])

答案——面试题: 匿名函数

Python— 匿名函数的更多相关文章

  1. python 匿名函数的使用(并没有那么简单)

    以下为几种匿名函数的使用方式:x=[(lambda x:x**2)(x) for x in range(10)]print(x)y=[x**2 for x in range(10)]print(y)i ...

  2. Python匿名函数_return语句

    Python匿名函数: 使用 lambda 关键字创建匿名函数: lambda 定义的函数只是一个表达式,而不是代码块 lambda 函数拥有自己的命名空间,不能够访问参数列表之外的 或 全局命名空间 ...

  3. python匿名函数(lambda)

    简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方 ...

  4. python匿名函数

    文章导读: 以前自己一直没搞明白Python中的匿名函数,现在拿这个问题基本上搞明白了,拿自己的理解整成一篇文章,附带大量例子,让其更加好理解. 在编程语言中,函数的应用: 1. 代码块重复,这时候必 ...

  5. python 匿名函数与三元运算

    匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: def calc(x,y): return x*y print(calc(2,3)) # 换成匿名函数 calc = lambda x ...

  6. python 匿名函数&内置函数

    匿名函数:为了解决那些功能很简单的需求而设计的一句话函数怎么定义匿名函数: cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数 ...

  7. python匿名函数 高阶函数 内置函数 文件操作

    1.匿名函数 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用 ...

  8. Python匿名函数详解

    python 使用 lambda 来创建匿名函数. lambda这个名称来自于LISP,而LISP则是从lambda calculus(一种符号逻辑形式)取这个名称的. 在Python中,lambda ...

  9. [ python ] 匿名函数和高阶函数

    匿名函数 描述:    关键字 lambda 定义的函数    语法: 函数名 = lambda 参数:返回值 返回值:    函数返回结果值 实例: 一个参数的匿名函数: func = lambda ...

  10. python 匿名函数&装饰器

    匿名函数 关键字lambda表示匿名函数,冒号前面的x表示函数参数匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果. >>> list(map(l ...

随机推荐

  1. 更改字段、添加字段脚本以及sql回滚

    --修改字段名称 EXEC sp_rename '[dbo].[SysMenu].[Type]', 'Position', 'COLUMN' --添加字段 alter table [dbo].[Age ...

  2. 高仿快递100--实战之RadioGroup和RadioButton应用

    1.RadioButton和CheckBox的差别: a.单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后.通过点击能够变为未选中 b.一组RadioButto ...

  3. js判段URL是否可用(js判段网络是否不可用)

    下面亲自測试可行: 兼容全部浏览器,用JQuery的方法,能够判段URL是否可用.也能够判段网络是否不可用(前提:假设URL可用.返回也不是200,那就说明是网络不可用.能够以此作为网络是否可用的判段 ...

  4. 牛散NO.1:MACD计啜诱多,勾魂枪连环夺命时

    上证日线“连环夺命勾魂枪” 话说MACD中圈C的回勾,好事者皆认为新的冲击波即将曙光再现.伴随着K线出现红柱中阳,更多的投资者将会被这一勾诱惑得群情亢奋,盲断行情又要 起来了.但往往事与愿违,“潘金莲 ...

  5. Atitit.cateService分类管理新特性与设计文档说明v1

    Atitit.cateService分类管理新特性与设计文档说明v1 1. V2 新特性规划1 2. 分类管理1 3. 分类增加与修改维护2 4. Js控件分类数据绑定2 1. V2 新特性规划 增加 ...

  6. linux学习之缓存机制

    linux中的缓存机制 在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回 ...

  7. swoole-1.7.18 版本已发布,支持 PHP7

    swoole-1.7.18 版本已发布,支持 PHP7 matyhtf 发布于: 2015年07月23日 (22评) 分享到:    收藏 +16 3月19日,深圳源创会火热报名中,go>> ...

  8. codeblocks如何watch数组

    codeblocks13.12+GDB 调试的时候,main传了一个int a[10]给quicksort 但是在quicksort内部,debugger把a看成一个pointer而不是array,所 ...

  9. 设计模式中类的关系之实现(Realization)

    实现关系是用来描述接口和实现接口的类或者构建结构之间的关系,接口是操作的集合,而这些操作就用于规定类或者构建结构的一种服务. 在接口和类之间的实现关系中,类实现了接口,类中的操作实现了接口中所声明的操 ...

  10. mysql 1005 错误

    建立外键的时候两个 表的相对应的 类型不一致!