lambda函数的特性

lambda表达式可以理解为一种抽象的函数实现方法,这种方式只有最基本的三个步骤:给与参数,表达式实现,返回结果。这种方式非常干净,减少了内存的使用,整个程序少了函数的污染,代码格式也会更为简练。但在python中的使用是受限的,只能进行简单的表达式计算。

下面简单给一个知乎扒的代码示范一下:

func = (lambda x:x**i for i in xrange(4))
for i in func:
    i(4)
1
4
16
64

上面代码的含义很简单,for i in xrange(4)会返回一个列表[0,1,2,3],而func对象实际上是一个迭代器iterator,对其遍历之后就会返回这样一个结果:

(lambda x:x**0)
(lambda x:x**1)
(lambda x:x**2)
(lambda x:x**3)

然后在进行lambda表达式的计算。

也就是说:

i(0) = (lambda x:x**0)
i(1) = (lambda x:x**1)
i(2) = (lambda x:x**2)
i(3) = (lambda x:x**3)

最后自然就会返回1,4,16,64这样一个结果。

再举一个map,filter函数与lambda函数结合使用的例子:

>>> l = [‘foo‘, ‘bar‘, ‘far‘]
>>> map(lambda x: x, l)
[‘foo‘, ‘bar‘, ‘far‘]
>>> filter(lambda x: ‘f‘ in x, l)
[‘foo‘, ‘far‘]
>>> map(lambda x: x.upper(), filter(lambda x: ‘f‘ in x, l))
[‘FOO‘, ‘FAR‘]

map(a,b)会在a,b之间建立一个映射关系,将a实际上是b中一个元素,lambda函数会以a为参数进行表达式运算,之后再返回结果。

同理filter也是如此,只不过filter只会返回lambda函数返回值为真的元素。

时间: 2024-10-29 19:08:14

lambda函数的特性的相关文章

C++11新特性:Lambda函数(匿名函数)

声明:本文参考了Alex Allain的文章http://www.cprogramming.com/c++11/c++11-lambda-closures.html 加入了自己的理解,不是简单的翻译 C++11终于知道要在语言中加入匿名函数了.匿名函数在很多时候可以为编码提供便利,这在下文会提到.很多语言中的匿名函数,如C++,都是用Lambda表达式实现的.Lambda表达式又称为lambda函数.我在下文中称之为Lambda函数. 为了明白Lambda函数的用处,请务必先搞明白C++中的自动

【C++11】新特性——Lambda函数

本篇文章由:http://www.sollyu.com/c11-new-lambda-function/ 文章列表 本文章为系列文章 [C++11]新特性--auto的使用 http://www.sollyu.com/c11-new-features-auto/ [C++11]新特性--Lambda函数 http://www.sollyu.com/c11-new-lambda-function/ 说明 在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find,用户经常

Python编程中自定义Lambda函数的使用场景

Python 中定义函数有两种方法,一种是用常规方式 def 定义,函数要指定名字,第二种是用 lambda 定义,不需要指定名字,称为 Lambda 函数. Lambda 函数又称匿名函数,匿名函数就是没有名字的函数,函数没有名字也行?当然可以啦.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要非给它取个名字不可. 好比电影里面的群众演员,往往他们的戏份很少,最多是衬托主演,跑跑龙套,他们需要名字吗?不需要,因为他们仅仅只是临时出镜,下次可能就用不着了,所以犯不着费心思给他们每个

初窥c++11:lambda函数

为什么需要lambda函数 匿名函数是许多编程语言都支持的概念,有函数体,没有函数名.1958年,lisp首先采用匿名函数,匿名函数最常用的是作为回调函数的值.正因为有这样的需求,c++引入了lambda 函数,你可以在你的源码中内联一个lambda函数,这就使得创建快速的,一次性的函数变得简单了.例如,你可以把lambda函数可在参数中传递给std::sort函数 #include <algorithm> #include <cmath> void abssort(float*

lambda函数

C++11一个最激动人心的特性是支持创建lambda函数(有时称为闭包).这意味着什么?一个Lambda函数是一个可以内联写在你代码中的函数(通常也会传递给另外的函数,类似于仿函数或函数指针).使用Lambda,创建机动函数会更简单,而以前你必须创建一个有名函数.在这篇文章中,我先用一些例子解释为什么lambda很酷,然后我会讲解可能会用到的关于lambda的所有细节. 为什么Lambda很酷 想象你有一个地址簿类,并且你想要提供一个可供检索的函数.你可能会提供一个简单的函数,接受一个字符串然后

【C++】【lambda】lambda函数介绍和个人理解(2)——lambda与仿函数

前言: 本来是打算11月末的时候写这篇文章,结果一直拖拖拖拖拖啊啊啊啊啊事多啊事多!OK这是对lambda的分析的第二篇,第三篇准备给大家带来一些"语法甜点",不过实在是不知道什么时候能够写完=.=到时候再说 导航: lambda函数介绍和个人理解(1)--初识lambda lambda函数介绍和个人理解(2)--lambda与仿函数 lambda函数介绍和个人理解(3)--lambda的语法甜点 正文: 好点的编程语言一般都有好的库支持,C++也不例外.C++语言在标准程序库STL中

功能样式:Lambda函数和映射

一等函数:Lambda函数和映射 什么是一流的功能? 您之前可能已经听过它说某种特定的语言是有用的,因为它具有"一流的功能".正如我在本系列关于函数式编程的第一篇文章中所说,我不同意这种流行的看法.我同意一流函数是任何函数式语言的基本特性,但我不认为这是语言功能的充分条件.有很多命令式语言也有此功能.但是,什么是一流的功能?当函数可以被视为任何其他值时,函数被描述为第一类 - 也就是说,它们可以在运行时动态分配给名称或符号.它们可以存储在数据结构中,通过函数参数传入,并作为函数返回值返

python笔记-lambda函数、sorted函数、map函数

1.lambda函数:又称匿名函数,示例如下: def f(x): return x**2 print f(4)  #16 g = lambda x:x**2 print g(4)  #16 2.map函数 print map(lambda x:x**2,range(10)) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 3.sorted函数 dict = {9:2,4:3,6:9,'a':'test','e':'fff','*':'$'} print sorted

lambda函数,常用函数,内置函数(string,zip()map()filter())的用法

lambda函数胡使用#coding:utf-8g = lambda x,y:x*y/*必须亦g=*/print g(2,3)/*print必须有*/swtich函数使用 def jia(x,y):    return x+ydef jian(x,y):    return x-ydef cheng(x,y):    return x*ydef chu(x,y):    return x/yoperator = {"+":jia,"-":jian,"*&q