• 技术文章 >Python技术 >Python基础教程

    学会Lambda,让程序Pythonic一点

    silencementsilencement2019-12-12 15:09:02原创1846

    Lambda是Python里的高阶用法,要把代码写得Pythonic,就需要了解这些高阶用法,想说自己是一名真正的Python程序员,先要把代

    码写得Pythonic。

    今天聊下Lambda的用法,写篇简短的用法说明。

    Lambda是匿名函数的意思,在程序中有些简单的函数我们可能只会使用一两次,这种情况下,你不必把它写成一个函数,而是用

    Lambda的写法,来让程序更简洁。

    Lambda的写法原型是:

    lambda 参数:操作(参数)

    冒号左边是传入的参数,冒号右边是使用参数要做的操作。

    比如

    lambda x:x+1

    上面的写法等同于如下写法,给参数加1,再返回:

    def plus(x):
    return x+1

    比如

    lambda x,y:x*y

    上面的写法等同于:

    def mul(x,y):
    retuen x*y

    举几个实际的例子:

    1、比如对list排序,如下简单的list
    nums = [3, 1, 7, 4, 8, 10]
    对nums按降序排列,这个很简单是吧:

    >>>nums = [3, 1, 7, 4, 8, 10]>>>sorted(nums, reverse=True)>>>[10, 8, 7, 4, 3, 1]

    如果是对嵌套list排序呢?
    比如:nums = [[10, 20, 11], [3, 9, 6], [8, 14, 3]]
    我们想按每个元素里的第二个值降序排列

    直接用上面sorted的写法就没法排序,这个时候用lambda就很方便:

    >>>nums = [[10, 20, 11], [3, 9, 6], [8, 14, 3]]
    >>>sorted(nums, key=lambda x:x[1], reverse=True)
    >>>[[10, 20, 11], [8, 14, 3], [3, 9, 6]]

    这个嵌套列表就按没想元素的第二个值降序排列好了,这个lambda的意思是返回元素的第二个值,它的写法等同于如下:

    >>>def lis(x):
    >>> return x[1]
    >>>sorted(nums, key=lis, reverse=True)
    >>>[[10, 20, 11], [8, 14, 3], [3, 9, 6]]

    比较一下,用lambda写代码要简介很多。

    2.再比如按字典的value进行降序排序

    nums = {'yuan':80, 'ren':93, 'xue':60}
    nums = {'yuan':80, 'ren':93, 'xue':60}
    sorted(nums, key=lambda x: nums[x], reverse=True)

    3.比如想取列表里的值
    nums = [‘1’, ‘100’, ‘111’, ‘2’, 2, 2.57]
    但是列表里还有字符串,没法直接比较大小,怎么做,用lambda来处理。

    >>>nums = ['1', '100', '111', '2', 2, 2.57]
    >>>max(nums, key=lambda x:int(x))
    >>>'111'

    这个写法等同于

    def trsn(x):
    return int(x)
    max(nums, key=trsn)

    如果lambda结合map , filter 等高阶Python语法,还有更多的用法。

    如上用lambda的好处是,让代码更简洁,这是程序员对代码的一种追求。坏处就是让程序不太容易看懂,不过只要你搞清楚了lambda的用法,也没那么难懂。

    专题推荐:lambda
    上一篇:Python函数的基本形式 下一篇:python3安装详细步骤

    相关文章推荐

    • 什么是网络协议• python中的去除重复项的操作• python中少见的函数map()和partial()• python的sort()排序方法• Python中的文件读写-理论知识

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网