lambda

lambda简单来说就是可以一行代码定义一个函数,使代码更加简洁舒服。

. 对于那些抽象的并且整个程序执行下来调用一两次的函数,有时候给函数起个名字也是比较头痛的问题,使用lambda就不需要考虑命名的问题了

既然提到lambda,就顺便介绍两个牛逼的BIF

filter()

filter(function or None,iterable) ,如果第一个参数是函数,那么filter会把interable全部迭代一遍,如果结果为True,就筛选出来,

a = list(filter(lambda n: not(n % 3),range(1,100)))

执行结果

a
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

看到这里是不是觉得用列表推导式也可以呢,那试一下

a = [n for n in range(1,100) if n % 3 == 0]

执行结果

>>> a
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

上面是一个参数是函数时的表达,那要是None呢!再举个栗子

filter(None,[1,0,False,True])
a = list(filter(None,[1,0,False,True]))

执行结果

>>> a
[1, True]

可以看出,第一个参数有函数在时,就是将iterable放到函数里然后删选出True的值,再返回对应的iterable的值,如果是None就直接删选满足True里的iterable值

map()

也是两个参数,一个函数,一个可迭代对象/也可以有多个可迭代对象

a = list(map(lambda x: x*2,range(10)))

执行结果

>>> a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

前面也说了map可以有多个可迭代对象

a= list(map(lambda x,y:[x,y],[1,3,5,7,9],[2,4,6,8,10]))

执行结果

>>> a
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]

可以看出根据函数对制定序列做映射

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在开头:本人打算开始写一个Kotlin系列的教程,一是使自己记忆和理解的更加深刻,二是可以分享给同样想学习Kot...
    胡奚冰阅读 5,083评论 0 6
  • lambda即lambda表达式,简称lambda。本质上是可以传递给其它函数的一小段代码。有了lambda,可以...
    程自舟阅读 16,174评论 1 26
  • 原文地址: http://cr.openjdk.java.net/~briangoetz/lambda/lambd...
    mualex阅读 3,865评论 0 0
  • 1、首先把npm上要修改的项目找到对应的 GitHub 地址, 点击其中的 fork 按钮 2、将项目git c...
    一沭丶阅读 9,383评论 0 0
  • 人往往责怪身体懒惰 就如初学单车的人 责怪它笨重、坚硬、执拗 越想保持平衡越难做到 就像越想勤奋上进越力不从心 身...
    54晨光阅读 3,073评论 0 0