Python之lambda表达式和内置函数-阿里云开发者社区

开发者社区> 余二五> 正文

Python之lambda表达式和内置函数

简介:
+关注继续查看

lambda表达式其实就是简化的函数表达式。

它只用于处理简单逻辑,

它会自动return数据


通常定义一个函数,按照以下形式:

1
2
3
4
5
def  func(arg):
      return arg +1
result = func(100)
print result
101


以上函数用lambda表达式可以这么写:

1
2
3
func2 = lambda a: a+1
result = func2(100)
print result


在lambda表达式中,func2 相当于函数表达式中的func,即函数的名称

a相当于函数表达式中的arg,即函数的参数。

冒号后面的a+1,相当于函数表达式中的返回结果,只不过在lambda表达式中不再用return来声明了。


之前的文档中介绍过,函数可以添加多个参数,,lambda表达式也可以


例如:

1
2
3
4
func3 = lambda a,b: a + b
result = func3(100,200)
print result
300



Python内置函数


map方法:

map方法会遍历整个序列(包括列表和元组),并对每一个元素进行相应的操作。

例如:有一个列表,将列表中的每一个元素加10。可以用map函数操作

li = [,,]
func1(arg):
    arg +  = (func1,li)

map内部原理其实是,

 = []
I li:
    .append(func1(I))


map函数可以接受多个序列作为参数:

l1 = [,,]
l2 = [,,]
l3 = [,,]
func2(a1,a2,a3):
    a1 + a2 + a3

(func2,l1,l2,l3)

[17, 30, 43]

注意,如果接受多个序列作为参数,则每一个序列的元素个数必须相等。

上面的例子用lambda表达式,这样写

1
2
3
l1 = [,,]
l2 = [,,]
l3 = [,,]

print map(lambda a1,a2,a3:a1+a2+a3,l1,l2,l3)



filter函数:

filter会遍历序列中的每一个元素,按条件对元素进行过滤,其实内部原理就是按照条件进行计算,计算结果为True的元素不过滤,计算结果为False,则过过滤

例如:

例1:

1
2
3
>>> li = [11,22,'',False,0]
>>> print filter(None,li)
[11, 22]

上面的例子中,None表示过滤掉布尔值为假的元素。0,False,空字符串都是布尔值都是假

 = [,,,]
func(a):
    a>(func,)

[44,55]

这里就是遍历l1这个列表,每一个元素通过函数func计算,大于33的则返回True,否则返回False。返回False则被过滤掉了。


reduce函数:

 接受一个序列,遍历序列中的元素,然后进行一系列的计算,得到一个结果。

reduce是将给出的元素按照方法进行计算,至少要接受两个元素。

例如计算1+2+3+4+5的和

reduce的原理是:计算1+2得到a 然后计算a+3,得到b,再计算b+4.依次类推

li =[,,,,]

 = (arg1,arg2:arg1+arg2,li)










本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1826950,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java8 Lambda表达式详解手册及实例
Java8 Lambda表达式详解手册及实例
7 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
12047 0
函数式编程与面向对象编程[1]: Lambda表达式 函数柯里化 高阶函数
函数式编程与面向对象编程[1]: Lambda表达式 函数柯里化 高阶函数.md 之剑 2016.5.2 11:19:09 什么是lambda表达式 例子 For example, in Lisp the 'square' function can b...
1072 0
详解javascript立即执行函数表达式(IIFE)
立即执行函数,就是在定义函数的时候直接执行,这里不是申明函数而是一个函数表达式 1.问题 在javascript中,每一个函数在被调用的时候都会创建一个执行上下文,在函数内部定义的变量和函数只能在该函数内部调用,正是因为这个上下文,使得在调用函数的时候可以创建一些私有变量。
1005 0
Java语法糖--Lambda表达式存在的意义
本文目录 1. Lambda表达式的本质 2. 语法 2.1 通过类实现加密 2.2 通过匿名内部类实现加密 2.3 通过Lambda表达式实现加密 2.4 Lambda表达式的简略写法 3. Lambda表达式存在的意义 4. 函数式接口
6 0
JavaScript立即调用的函数表达式
主要参考知乎上这个问题:javascript 匿名函数有哪几种执行方式  长天之云的回答。 ~(function() {//todo})();!(function() {//todo})(); 对于不太熟悉JavaScript的同学来讲,可能会有两个疑问: 1、!(function() {})();前面为什么要加~、!这些符号? 后面的()是执行一个函数,而(function() {})是一个执行表达式,返回一个匿名函数的引用。
607 0
Kotlin语法(函数和lambda表达式)
三、函数和lambda表达式 1. 函数声明 fun double(x: Int): Int { } 函数参数是用 Pascal 符号定义的 name:type。参数之间用逗号隔开,每个参数必须指明类型。
634 0
+关注
20382
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载