杨魅力
你是说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函数。我花了一段时间才适应他们,但最终我明白了他们是语言中非常有价值的一部分。