精华内容
下载资源
问答
  • Python lambda表达式用法

    千次阅读 2020-10-15 21:36:59
    python lambda表达式简单用法 lambda表达式简单用法lambda是什么?lambda表达式在sort函数中的使用内置函数 lambda是什么? 看个例子: g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>&...

    python lambda表达式简单用法

    lambda是什么?

    看个例子:

    g = lambda x:x+1
    

    看一下执行的结果:

    g(1)
    >>>2

    g(2)

    >>>3

    当然,你也可以这样使用:

    python lambda x:x+1(1)

    >>>2

    可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为:

     def g(x):
         return x+1
    

    非常容易理解,在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解。

    Python中,也有几个定义好的全局函数方便使用的,filter, map, reduce

    >>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
    
    >>> print filter(lambda x: x % 3 == 0, foo)
    [18, 9, 24, 12, 27]
    
    >>> print map(lambda x: x * 2 + 10, foo)
    [14, 46, 28, 54, 44, 58, 26, 34, 64]
    
    >>> print reduce(lambda x, y: x + y, foo)
    139
    

    上面例子中的map的作用,非常简单清晰。但是,Python是否非要使用lambda才能做到这样的简洁程度呢?在对象遍历处理方面,其实Python的for…in…if语法已经很强大,并且在易读上胜过了lambda。

    比如上面map的例子,可以写成:

    print [x * 2 + 10 for x in foo]
    

    非常的简洁,易懂。

    filter的例子可以写成:

    print [x for x in foo if x % 3 == 0]
    

    同样也是比lambda的方式更容易理解。

    上面简要介绍了什么是lambda,下面介绍为什么使用lambda,看一个例子(来自apihelper.py):

    processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
      在Visual Basic,你很有可能要创建一个函数,接受一个字符串参数和一个 collapse 参数,并使用 if 语句确定是否压缩空白,然后再返回相应的值。这种方式是低效的,因为函数可能需要处理每一种可能的情况。每次你调用它,它将不得不在给出你所想要的东西之前,判断是否要压缩空白。在 Python 中,你可以将决策逻辑拿到函数外面,而定义一个裁减过的 lambda 函数提供确切的 (唯一的) 你想要的。这种方式更为高效、更为优雅,而且很少引起那些令人讨厌 (哦,想到那些参数就头昏) 的错误。

    通过此例子,我们发现,lambda的使用大量简化了代码,使代码简练清晰。但是值得注意的是,这会在一定程度上降低代码的可读性。

    习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即:

    普通条件语句

    if 1 == 1:
        name = 'wupeiqi'
    else:
        name = 'alex'
    

    三元运算

    name = 'wupeiqi' if 1 == 1 else 'alex'
    

    对于简单的函数,也存在一种简便的表示方式,即:lambda表达式

    ---------------------------------------普通函数-------------------------------------
    定义函数(普通方式)

    def func(arg):
        return arg + 1
    

    执行函数

    result = func(123)
    

    ---------------------------------------lambda----------------------------------------

    定义函数(lambda表达式)

    my_lambda = lambda arg : arg + 1
    

    执行函数

    result = my_lambda(123)
    

    lambda存在意义就是对简单函数的简洁表示

    lambda表达式在sort函数中的使用

    假如a是一个由元组构成的列表,对该列表进行排序时,我们需要用到参数key,也就是关键词,如下面代码所示,lambda是一个匿名函数,是固定写法;x表示匿名函数的输入,即列表中的一个元素,在这里,表示一个元组,x只是临时起的一个名字,你可以使用任意的名字;x[0]表示匿名函数的输出,即元组里的第一个元素,即key = x[0];所以这句命令的意思就是按照列表中第一个元素进行排序。

    >>> a = [('b', 4), ('a', 12), ('d', 7), ('h', 6), ('j', 3)]
    >>> a.sort(key=lambda x: x[0])
    >>> print(a)
    [('a', 12), ('b', 4), ('d', 7), ('h', 6), ('j', 3)]
    

    内置函数

    一、map

    遍历序列,对序列中每个元素进行操作,最终获取新的序列。

    在这里插入图片描述

    二、filter

    对于序列中的元素进行筛选,最终获取符合条件的序列
    在这里插入图片描述

    三、reduce

    对于序列内所有元素进行累计操作

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • python lambda表达式用法

    2021-01-23 21:44:40
    Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数。今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式。 1.为什么要用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(lambda x: x*x,[y for y in range(10)])
    从这个简单的例子,我们可以看出,用lambda函数首先减少了代码的冗余,其次,用lambda函数,不用费神地去命名一个函数的名字,可以快速的实现某项功能,最后,lambda函数使代码的可读性更强,程序看起来更加简洁。

    从上面这个简单的例子,也可以看出来lambda函数的语法是唯一的,其形式如下:

    lambda argument_list:expersion
    语法中的argument_list是参数列表,它的结构与Python中函数(function)的参数列表是一样的,例如

    a,b
    a=1,b=2
    *args
    **kwargs
    a,b=1,*args


    语法中的expression是一个关于参数的表达式,表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。比如以下的一些合法的表达式

    1
    None
    a+b
    sum(a)
    1 if a >10 else 0

    除了上面提到的lambda函数的优点外,我看有的文章说用lambda函数会提高效率,那究竟是不是呢?我们写一段代码来验证一下

    import time

    测试的Def函数

    def square1(n):
    return n ** 2

    测试的Lambda函数

    square2 = lambda n: n ** 2

    print(time.time())

    使用Def函数

    i = 0
    while i < 1000000000:
    square1(100)
    i += 1

    print(time.time())

    使用lambda函数

    i = 0
    while i < 1000000000:
    square2(100)
    i += 1

    print(time.time())

    1413272496.27
    1413272703.05 (Def 函数:207s)
    1413272904.49 (Lambda函数:201s)
    从上面可以看出,两种的所需的时间差不多,效率丝毫不受影响。

    2.lambad函数的用法上面也讲到了匿名函数的优点,那它到底有哪些用处呢?

    (1)直接赋给一个变量,然后再像一般函数那样调用

    c=lambda x,y,z:xyz
    c(2,3,4)

    24
    当然,也可以在函数后面直接传递实参

    (lambda x:x**2)(3)
    9
    (2)将lambda函数作为参数传递给其他函数比如说结合map、filter、sorted、reduce等一些Python内置函数使用,下面举例说明。

    fliter(lambda x:x%3==0,[1,2,3,4,5,6])

    [3,6]

    squares = map(lambda x:x**2,range(5)
    print(lsit(squares))
    [0,1,4,9,16]
    与sorted函数结合使用,比如:创建由元组构成的列表:

    a=[(‘b’,3),(‘a’,2),(‘d’,4),(‘c’,1)]
    按照第一个元素排序

    sorted(a,key=lambda x:x[0])
    [(‘a’,2),(‘b’,3),(‘c’,1),(‘d’,4)]
    按照第二个元素排序

    sorted(a,key=lambda x:x[1])
    [(‘c’,1),(‘a’,2),(‘b’,3),(‘d’,4)]
    与reduce函数结合使用

    from functools import reduce
    print(reduce(lambda a,b:’{},{}’.format(a,b),[1,2,3,4,5,6,7,8,9]))

    1,2,3,4,5,6,7,8,9
    (3)嵌套使用将lambda函数嵌套到普通函数中,lambda函数本身做为return的值

    def increment(n):
    return lambda x:x+n

    f=increment(4)
    f(2)
    6
    (4)字符串联合,有默认值,也可以用x=(lambda…)这种格式

    x=(lambda x=‘Boo’,y=‘Too’,z=‘Z00’:x+y+z)
    print(x(‘Foo’))

    ‘FooTooZoo’
    (5)在tkinter中定义内联的callback函数

    import sys
    from tkinter import Button,mainloop

    x=Button(text=‘Press me’,command=(lambda :sys.stdout.write(‘Hello,World\n’)))
    x.pack()
    x.mainloop()
    这段代码还是挺有意思的,希望小伙伴们可以复制粘贴运行一下哈。(6)判断字符串是否以某个字母开头有

    Names = [‘Anne’, ‘Amy’, ‘Bob’, ‘David’, ‘Carrie’, ‘Barbara’, ‘Zach’]
    B_Name= filter(lambda x: x.startswith(‘B’),Names)
    print(B_Name)

    [‘Bob’, ‘Barbara’]
    (7)求两个列表元素的和

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

    [6,8,10,12]
    (8)求字符串每个单词的长度

    sentence = “Welcome To Beijing!”
    words = sentence.split()
    lengths = map(lambda x:len(x),words)
    print(list(lengths))
    [7,2,8]
    总结

    对于lambda函数的使用在Python社区一直存在争议,支持一方认为lambad函数的使用,使得Python代码更加紧凑,更加Pythonic;反对方则认为Python的lambda函数限制多多,最严重的当属于它只能由一条表达式组成,用多了以后反而使得程序看起来不那么清晰。

    但我个人觉得作为一个Python的初级用户,lambda函数确实让编码更简洁,更省事,一句话好用就行,其余的看神仙打架吧!

    转载自知乎主要是用来自己看如果有侵权请联系删除,谢谢。这里放一下大佬的链接
    知乎-小包总-细说Python的lambda函数用法

    展开全文
  • python lambda用法

    2017-02-04 11:36:37
    对于只需运行一次的单行函数,建议使用lambda。下面是python lambda的格式,看起来好精简阿。 lambda x: ‘test’ lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的是表达式,也是返回值。lambda...

    lambda用来创建匿名函数,性能比用def要好很多。对于只需运行一次的单行函数,建议使用lambda。

    下面是python lambda的格式,看起来好精简阿。
    lambda x: ‘test’
    lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的是表达式,也是返回值。lambda语句构建的其实是一个函数对象。

    下面举几个python lambda的例子吧
    单个参数的:
    g = lambda x:x*2
    print(g(3))
    结果是6

    多个参数的:
    m = lambda x,y,z: (x-y)*z
    print(m(3,1,2))
    结果是4

    参考:
    http://www.cnblogs.com/BeginMan/p/3178103.html
    http://www.cnblogs.com/wanpython/archive/2010/11/01/1865919.html

    python排序 sorted(key=lambda),请参考:
    https://www.cnblogs.com/zle1992/p/6271105.html

    展开全文
  • 我的需求定义1个list类型的变量,名称是testtest包含3个元素,每个元素都是dict类型现在我想要实现的是,按照每个dict中age值的大小对test的元素进行排序需要借助lambdatest=[{'name':'Bob','age':14},{'name':'Lisa...

    我的需求

    定义1个list类型的变量,名称是test

    test包含3个元素,每个元素都是dict类型

    现在我想要实现的是,按照每个dict中age值的大小对test的元素进行排序

    需要借助lambda

    test=[{'name':'Bob','age':14},{'name':'Lisa','age':16},{'name':'Sam','age':9}]

    test.sort(key=lambda i:i['name'])

    print(test)

    test.sort(key=lambda i:i['age'],reverse=True)

    print(test)

    [{'name': 'Lisa', 'age': 16}, {'name': 'Bob', 'age': 14}, {'name': 'Sam', 'age': 9}]

    如果不使用lambda,也可以单独定义1个函数来获取 排序的元素,像这样:

    关键是弄清楚sort方法,key参数的使用规则

    def getAge(elem):

    return elem['age']

    test.sort(key=getAge)

    print(test)

    [{'name': 'Sam', 'age': 9}, {'name': 'Bob', 'age': 14}, {'name': 'Lisa', 'age': 16}]

    知识分解

    Python-lambda用法

    lambda函数也叫匿名函数,即,函数没有具体的名称

    一、基础

    lambda语句构建的其实是一个函数对象。匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果

    lembda(a,b:a+b)

    #关键字lembda表示匿名函数,冒号前是参数,可以有多个,用逗事情隔开,冒号右边的返回值

    lembda的优点:

    使用python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简

    对于一些抽象的,不会别的地方复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。

    使用lambda在某些时候让代码更容易理解。

    举一个简单的例子:

    def f(x):

    return x*2

    print (f(4))

    8

    python中使用lambda的话,写成这样

    g=lambda x:x*2

    print(g(4))

    8

    二、进阶-内置函数

    map()

    遍历序列,对序列中的每个元素进行操作,最终获取新的序列

    li=[11,22,33]

    sl=[1,2,3]

    new_list=map(lambda a,b:a+b,li,sl)

    print(new_list)#map方法会返回一个filter对象

    print(list(new_list))

    [12, 24, 36]

    reduce()

    对于序列内所有元素进行累计操作

    from functools import reduce

    li=[11,22,33]

    result = reduce(lambda a,b :a+b,li)

    #reduce的第1个参数,函数必须要有2个参数

    #reduce的第2个参数,要循环的序列

    #reduce的第3个参数,初始值

    print(result)

    66

    filter()

    对序列中的元素进行筛选,最终获取符合条件的序列

    li=[11,22,33]

    new_list=filter(lambda a:a>22,li)

    print(new_list)#filter方法会返回一个filter对象

    print(list(new_list))

    [33]

    sort函数

    先来熟悉一下普通的排序方式

    如果是对list类型数据进行排序,可以使用list.sort()方法,该方法会直接修改原list元素的排列顺序

    b=[4,16,9]

    b.sort()

    b

    [4, 9, 16]

    b.sort(reverse=True)

    b

    [16, 9, 4]

    如果只使用reverse()方法,可以对列表进行逆序显示

    c=[3,5,1]

    c.reverse()

    c

    [1, 5, 3]

    语法

    sort()函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数

    语法:

    list.sort(key=None,reverse=False)

    参数

    key --主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代的一个元素进行排序。

    reverse --排序规则,reverse=True 降序,reverse=False 升序(默认)

    返回值

    该方法没有返回值,但是会对列表的对象进行排序。

    示例

    alist=['Bob','Tom','Zara','Lisa']

    alist.sort()#默认升序

    alist

    ['Bob', 'Lisa', 'Tom', 'Zara']

    alist.sort(reverse=True)#降序

    alist

    ['Zara', 'Tom', 'Lisa', 'Bob']

    通过指定列表中的元素进行排序

    def takeSecond(elem):

    return elem[1]

    random=[(1,4),(5,2,),(1,9)]

    random.sort(key=takeSecond)

    random

    [(5, 2), (1, 4), (1, 9)]

    参考文档

    展开全文
  • Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数。今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式。1.为什么要用lambda函数?先举一个例子:将一...
  • 之前提到过在List的sort方法中有个key参数,需要用到lambda表达式,所以在这里对lambda表达式进行一些介绍,如果有函数式语言编程经验这个就很好理解了。 lambda表达式是一个匿名函数,其实lambda我们可以认为就是个...
  • Python的几种lambda排序方法 复习一下lambda排序方法 1. 对单个变量进行排序 #lst = [[5,8],[5,3],[3,1]] lst.sort(key = lambda x : x[1]) #lst = [[3,1],[5,8],[5,3]] 以元素的第二个元素升序排列 2. 对多个变量...
  • [编程基础] Python lambda函数总结

    千次阅读 多人点赞 2020-06-25 09:56:15
    文章目录1 介绍1.1 简单使用1.2 Python lambda与map1.3 Python lambda与filter1.4 Python lambda与sort2 参考 1 介绍 Python lambda函数也称为匿名函数,是没有名称的内联函数。它们是用lambda关键字创建的。这是...
  • lambda argument_list: expression argument_list是参数列表 expression是一个关于参数的表达式。表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。 lambda函数有输入和输出:输入是传入到...
  • 谈谈python lambda

    千次阅读 2018-07-05 14:05:25
    谈谈python lambda ...3. 使用lambda的例子 1. lambda的语法格式 lambda [arg1 [, arg2,......argn]]: expression 2. lambda 与 def的区别 def创建的方法是有名称的,而lambd...
  • python lambda

    2018-08-08 21:20:56
    lambdaPython编程语言中使用频率较高的一个关键字。那么,什么是lambda?它有哪些用法? 这里,我们通过阅读各方资料,总结了关于Python中的lambda的“一个语法,三个特性,四个用法,一个争论”。 一个语法 在...
  • print(list(filter(lambda x: x<3,[1,2,3,4,5,6]))) # def get_missing_letter(a): # s1 = set("abcdefghijklmnopqrstuvwxyz") # print(s1) # s2 = set(a.lower()) # ret = "".join(sorted(s1-s2)) # return ...
  • 本篇文章主要是介绍了PythonLambda函数与排序,简单的介绍了Lambda函数的用法排序,有需要的朋友可以了解一下。
  • Python Lambda 表达式

    2018-12-03 10:38:02
    通常,当你不想费神去构建一个函数的场合下,可以使用lambda表示,达到简化代码的作用。 所以一般来说,lambda表达式的内容是比较简单的。 应用在函数式编程 python提供了很多函数式编程的特性,如map,reduce,filter...
  • python lambda表达式还是在怎么给字典排序中看到的 感觉很有趣 # pythonlambda表达式用法 # Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的...
  • # 数字字符串排序貌似还是以字符顺序而不是数字大小来排的, # 可能要先转化为数字(而re.findall('\((.*?)\)', x)返回的是字符串列表,要把它转换成数字列表) filenames.sort(key=lambda x: list(map(eval, re....
  • python Lambda函数

    2018-06-24 16:37:41
    Python3 程序开发指南》Lambda函数,是一个匿名函数,创建语法: lambda parameters:expressparameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数。expression:不能包含分支或循环(但允许...
  • 使用python对列表(list)进行排序,说简单也简单,说复杂也复杂,我一开始学的时候也搞不懂在说什么,只能搜索一些英文文章看看讲解,现在积累了一些经验,写在这里跟大家分享,1.sorted函数首先介绍sorted函数,...
  • #用lambda表达式来排序a=[{"name":"zhangsan","age":10},{"name":"lisi","age":15},{"name":"wangwu","age":6}]a.sort(key=lambda x:x['age'])print(a)#func相当于一个lambda表达式func=raw_input("请输入表达式")...
  • 主要介绍了python lambda表达式在sort函数中的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • pythonlambda用法

    2019-11-13 10:13:25
    Python-- Lambda Lambda 表达式是一个匿名函数,即没有函数名的函数。 在Python中,lambda的语法是唯一的。其形式如下:lambda argument_list: expression其中,lambdaPython预留的关键字,argument_list和...
  • Python lambda匿名函数

    2020-04-19 21:56:29
    argument_list是参数列表,它的结构与Python中函数(function)的参数列表是一样的(输入) expression是一个关于参数的表达式。表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的(输出) ...
  • lambdaPython编程语言中使用频率较高的一个关键字。那么,什么是lambda?它有哪些用法?这里,我们通过阅读各方资料,总结了关于Python中的lambda的“一个语法,三个特性,四个用法,一个争论”。一个语法在Python...
  • Python-lambda用法

    2020-03-22 17:36:13
    Python中,lambda的语法是唯一的。 其形式如下: lambda argument_list: expression 其中,lambdaPython预留的关键字 ,argument_list和expression由用户自定义。具体介绍如下。 1. 这里的argument_list是参数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,491
精华内容 11,796
关键字:

pythonlambda排序用法

python 订阅