python 使用lambda函数 和 list comprehension

python 使用lambda函数

学习资源

  1. lambda函数学习
  2. list comprehension
  3. 多维数组初始化

lambda 函数

  • Python 支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做 lambda 的函数,是从 Lisp 借用来的,可以用在任何需要函数的地方。
  • def f(x): return x*2,用lambda函数来替换可以写成:g = lambda x: x*2`g(3)结果是6.(lambda x: x*2)(3)`也是同样的效果。
    • 这是一个 lambda 函数,完成同上面普通函数相同的事情。注意这里的简短的语法:在参数列表周围没有括号,而且忽略了 return 关键字 (隐含存在,因为整个函数只有一行)。而且,该函数没有函数名称,但是可以将它赋值给一个变量进行调用
    • 使用 lambda 函数时甚至不需要将它赋值给一个变量。这可能不是世上最有用的东西,它只是展示了 lambda 函数只是一个内联函数。
    • 总的来说,lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。lambda 函数不能包含命令,包含的表达式不能超过一个。不要试图向 lambda 函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。 我将它们用在需要封装特殊的、非重用代码上,避免令我的代码充斥着大量单行函数。

列表推导式(list comprehension)

  • 看一段简单代码

    testList = [1,2,3,4]
    def mul2(x):
    print x*2
    [mul2(i) for i in testList]
    [mul2(i) for i in testList if i%2==0]

多维数组初始化

multilist = [[0 for col in range(5)] for row in range(3)]

学以致用

m = [[-1.0, 2.0/c-1, -2.0/c+1, 1.0],
             [2.0, -3.0/c+1, 3.0/c-2, -1.0],
             [-1.0, 0.0, 1.0, 0.0],
             [0.0, 1.0/c, 0.0, 0.0]]
multiply = lambda x: x*c
m = [[multiply(m[col][row]) for col in range(4)] for row in range(4)]
print [[m[col][row] for col in range(4)] for row in range(4)]

它所作的工作:m是一个包含参数c的矩阵,他计算了c*m的结果
想了一下,最后一句改成

print [[multiply(each) for each in row] for row in m]

更加pythonic

时间: 2024-12-28 11:57:43

python 使用lambda函数 和 list comprehension的相关文章

Python的lambda函数与排序

Python的lambda函数与排序 2010-03-02 15:02 2809人阅读 评论(0) 收藏 举报 lambdapythonlistlispclass工作 目录(?)[+] 前几天看到了一行求1000的阶乘的Python代码: print    reduce ( lambda    x , y : x * y ,    range ( 1 ,    1001 )) 一下子被python代码的精简 与紧凑所折服,故对代码进行了简单的分析. reduce与range都是Python的内置

细说Python的lambda函数用法,建议收藏

细说Python的lambda函数用法,建议收藏 在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要用lambda函数? 先举一个例子:将一个列表里的每个元素都平方. 先用def来定义函数,代码如下 def sq(x): return x*x map(sq,[y for y in range(10)]) 再用lambda函数来编写代码 map(la

python之lambda函数

lambda函数又称为匿名函数,匿名函数就是没有函数名的函数. 1 2 >>> lambda x,y:x+y <function <lambda> at 0x7f0f0dd85578> x,y是函数的两个变量,位于冒号的左边,冒号右边的表达式是函数的返回值. 1 2 3 4 5 >>> add =lambda x,y:x+y >>> add <function <lambda> at 0x7f0f0dd855f

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

python之Lambda函数---笔记

<Python3 程序开发指南> Lambda函数,是一个匿名函数,创建语法: lambda parameters:express parameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数. expression:不能包含分支或循环(但允许条件表达式),也不能包含return(或yield)函数.如果为元组,则应用圆括号将其包含起来. 调用lambda函数,返回的结果是对表达式计算产生的结果. 根据参数是否为1 决定s为yes还是no >>> s =

python的lambda函数

例1:传入多个参数的lambda函数 def sum(x,y): return x+y 用lambda来实现: p = lambda x,y:x+y print(p(4,6)) 例2:传入一个参数的lambda函数 a=lambda x:x*x print(a(3)) 例3:多个参数的lambda形式: a = lambda x,y,z :(x+8)*y-z print(a(5,6,8)) 要点:1.lambda 函数不能包含命令, 2.包含的表达式不能超过一个. 3.lambda匿名函数的格式

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

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

Python的lambda匿名函数

lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x):return x**2print f(4) Python中使用lambda的话,写成这样 g = lambda x : x**2print g(4) lambda表达式在很多编程语言都有对应的实现.比如C#: var g = x => x**2Console.WriteLine(g(4)) 那么,lambda表达式有什么用处呢?很多人提出了质疑,lambda和普通的函数相比,就是省去了函数名称而已,同

Python中的lambda函数

今天在看书的时候,看到了这样的一条语句: if isinstance(value,int) or isinstance(value,float): split_function=lambda row:row[column]>=value 对其中的lambda这个函数表示很不明白,于是看了看Python文档,文档中解释如下:   lambda An anonymous inline function consisting of a single expression which is evalua