Python – Lambda表达式

导读:本篇文章讲解 Python – Lambda表达式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Lambda表达式简单来说就是定义了一个简单的匿名函数,使用这种方式可以简化编程,使程序更加”pythonic”(当然,这也是存在争议的)

简单的例子:

add = lambda x,y : x+y
add(1,3)    # 4

就相当于一个小函数,大部分情况下,是不会像这样定义名称的,一般像下面这样定义一个可能只是使用一次而且非常简单的函数,就会使用lambda表达式(当然这个例子使用列表解析式会更方便):

In [13]: a
Out[13]: [0, 1, 2, 3, 4]
In [14]: list(map(lambda x:x*x, [i for i in a]))
Out[14]: [0, 1, 4, 9, 16]

主要使用情况

  • Python中很多地方都支持函数式编程,例如map,filter, sorted等等,都可以将函数作为参数传入,lambda表达式一般配合这些函数使用:
In [33]: a = np.random.randint(-10, 10, 6)  # 随机生成数组

In [34]: a
Out[34]: array([-10,  -9,  -6,   9,   3,  -4])

In [35]: sorted(a, key=lambda x:abs(x))   # 按照绝对值大小排序 使用lambda表达式简化key函数
Out[35]: [3, -4, -6, -9, 9, -10] 
  • 另一个应用就是闭包计算

例如:
使用普通函数进行处理:

In [43]: def get_y(a,b):
    ...:     def fun(x):
    ...:         return a*x + b
    ...:     return fun
    ...:
    ...:

In [44]: y1 = get_y(1,1)

In [45]: y1(1)
Out[45]: 2

使用lambda表达式进行简化:

In [40]: def get_y(a,b):
    ...:     return lambda x : a*x + b
    ...:
    ...:

In [41]: y1 = get_y(1,1)

In [42]: y1(1)
Out[42]: 2

此外,lambda表达式的参数形式与函数是一致的,例如:

  • 有明确个数的参数
  • 没有输入参数
  • 有不确定个数的输入参数:
In [46]: func = lambda *x : sum(x)   # 不确定参数个数的lambda表达式

In [47]: func(1,2,3,4)
Out[47]: 10

还有可以传入关键值参数

Lambda表达式的基本使用就这样,Lambda在大部分情况下只是作为替代无需定义的简单函数,如果涉及了复杂的逻辑,自然最好还是使用正常的函数定义方式。

以上~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/116764.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!