为了账号安全,请及时绑定邮箱和手机立即绑定

为什么Pythonlambda有用?

为什么Pythonlambda有用?

qq_花开花谢_0 2019-06-04 17:11:29
为什么Pythonlambda有用?我在努力找出Python Lambdas。Lambda是那些在现实生活中应该被遗忘的“有趣”语言项目之一吗?我相信,在某些边缘情况下,它可能是需要的,但考虑到它的模糊性,它的潜力在未来的版本中被重新定义(我基于对它的各种定义所作的假设)和编码清晰度的降低-应该避免吗?这让我想起了C类型的溢出(缓冲区溢出)-指向顶部变量和重载以设置其他字段值。这感觉有点像一个技术人员的表演,但维护编码器噩梦。
查看完整描述

3 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

你是说Lambda函数?喜欢

lambda x: x**2 + 2*x - 5

这些东西其实很有用。Python支持一种称为功能程序设计你可以把函数传递给其他函数来做事情。例子:

mult3 = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9])

mult3[3, 6, 9],原始列表中的元素是3的倍数。这比这更短(而且可以说更清楚)。

def filterfunc(x):
    return x % 3 == 0mult3 = filter(filterfunc, [1, 2, 3, 4, 5, 6, 7, 8, 9])

当然,在这种情况下,您可以做与列表理解相同的事情:

mult3 = [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9] if x % 3 == 0]

(或者甚至是range(3,10,3)),但是还有许多其他更复杂的用例,您不能使用列表理解,而lambda函数可能是写出东西的最短方法。

  • 从另一个函数返回函数

    >>> def transform(n):...     return lambda x: x + n...>>> f = transform(3)>>> f(4)7

    这通常用于创建函数包装器,例如Python的装饰器。

  • 将可迭代序列的元素与reduce()

    >>> 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'
  • 按备用键排序

    >>> sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))[5, 4, 6, 3, 7, 2, 8, 1, 9]

我经常使用lambda函数。我花了一段时间才适应他们,但最终我明白了他们是语言中非常有价值的一部分。


查看完整回答
反对 回复 2019-06-04
?
长风秋雁

TA贡献1757条经验 获得超7个赞

lambda只是一种奇特的说法function..除了它的名字之外,它没有什么晦涩、可怕或神秘的地方。当您阅读以下一行时,请替换lambda通过function在你心中:

>>> f = lambda x: x + 1>>> f(3)4

它只定义了x..其他一些语言,比如R,明文规定:

> f = function(x) { x + 1 }> f(3)4

你看?这是编程中最自然的事情之一。


查看完整回答
反对 回复 2019-06-04
?
HUX布斯

TA贡献1876条经验 获得超6个赞

两行摘要:

  1. 闭包

    *非常有用。学习它们,使用它们,爱它们。
  2. Python的

    lambda

    关键词:不必要,偶尔有用。如果你发现自己对它做了一些非常复杂的事情,就把它放下,定义一个真正的函数。


查看完整回答
反对 回复 2019-06-04
  • 3 回答
  • 0 关注
  • 745 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信