2024-05-10 06:04:04 发布
网友
我在试着找出Python的名字。lambda是那些在现实生活中应该被遗忘的“有趣”语言吗?
我确信在某些边缘情况下可能需要它,但是考虑到它的模糊性,它在未来版本中被重新定义的可能性(我基于它的各种定义的假设)和降低的编码清晰度-应该避免吗?
这让我想起了C类型的溢出(缓冲区溢出)——指向顶部变量并重载以设置其他字段值。这感觉像是一种技术展示,但维护编码噩梦。
你说的是lambda functions?就像
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的倍数的元素。这比
mult3
[3, 6, 9]
def filterfunc(x): return x % 3 == 0 mult3 = 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函数可能是写出某些内容的最短方法。
range(3,10,3)
从另一个函数返回函数
>>> def transform(n): ... return lambda x: x + n ... >>> f = transform(3) >>> f(4) 7
这通常用于创建函数包装器,如Python的decorators。
可数序列的元素与reduce()结合
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函数。我花了一段时间去适应他们,但最终我明白了他们是语言中非常有价值的一部分。
lambda只是一种说function的奇特方式。除了它的名字,没有什么是晦涩难懂的,吓人的或神秘的。当你读到下面一行时,在你的脑海中用function代替lambda:
lambda
function
>>> f = lambda x: x + 1 >>> f(3) 4
它只是定义了x的函数。其他一些语言,比如R,明确地说:
x
R
> f = function(x) { x + 1 } > f(3) 4
你看到了吗?这是编程中最自然的事情之一。
两行摘要:
你说的是lambda functions?就像
这些东西其实很有用。Python支持一种称为函数式编程的编程风格,您可以将函数传递给其他函数来完成任务。示例:
将
mult3
设置为[3, 6, 9]
,即原始列表中3的倍数的元素。这比当然,在这种情况下,您可以做与列表理解相同的事情:
(或者甚至是
range(3,10,3)
),但是还有许多其他更复杂的用例,在这些用例中,您不能使用列表理解,lambda函数可能是写出某些内容的最短方法。从另一个函数返回函数
这通常用于创建函数包装器,如Python的decorators。
可数序列的元素与
reduce()
结合按备用键排序
我经常使用lambda函数。我花了一段时间去适应他们,但最终我明白了他们是语言中非常有价值的一部分。
lambda
只是一种说function
的奇特方式。除了它的名字,没有什么是晦涩难懂的,吓人的或神秘的。当你读到下面一行时,在你的脑海中用function
代替lambda
:它只是定义了
x
的函数。其他一些语言,比如R
,明确地说:你看到了吗?这是编程中最自然的事情之一。
两行摘要:
lambda
关键字:不必要,偶尔有用。如果你发现自己做了一些很复杂的事情,把它放在一边,定义一个真正的函数。相关问题 更多 >
编程相关推荐