在Python中,lambda是用于定义匿名函数(无名称的函数)的关键字,这就是为什么它们被称为lambda函数的原因。
基本上,它用于定义匿名函数,这些匿名函数可以/不能接受参数并返回数据/表达式的值。 让我们来看一个例子。
>>> # Defining a lambda function that takes 2 parameters(as integer) and returns their sum
...
>>> lambda num1, num2: num1 + num2
at 0x1004b5de8>
>>>
>>> # Let's store the returned value in variable & call it(1st way to call)
...
>>> addition = lambda num1, num2: num1 + num2
>>> addition(62, 5)
67
>>> addition(1700, 29)
1729
>>>
>>> # Let's call it in other way(2nd way to call, one line call )
...
>>> (lambda num1, num2: num1 + num2)(120, 1)
121
>>> (lambda num1, num2: num1 + num2)(-68, 2)
-66
>>> (lambda num1, num2: num1 + num2)(-68, 2**3)
-60
>>>
现在让我回答您的第二个问题。 第一个答案也很好。 这是我自己用另一个示例进行解释的方式。
假设我们有一个项目列表(具有数字内容的整数和字符串),如下所示,
nums = ["2", 1, 3, 4, "5", "8", "-1", "-10"]
我想使用sorted()函数对其进行排序,让我们看看会发生什么。
>>> nums = ["2", 1, 3, 4, "5", "8", "-1", "-10"]
>>> sorted(nums)
[1, 3, 4, '-1', '-10', '2', '5', '8']
>>>
它并没有像我想要的那样给我以下的期望,
['-10', '-1', 1, '2', 3, 4, '5', '8']
这意味着我们需要一些策略(以便sorted可以将我们的字符串项视为整数)来实现这一目标。 这就是为什么使用key关键字参数的原因。 请看下面的。
>>> nums = ["2", 1, 3, 4, "5", "8", "-1", "-10"]
>>> sorted(nums, key=int)
['-10', '-1', 1, '2', 3, 4, '5', '8']
>>>
让我们使用lambda函数作为键的值
>>> names = ["Rishikesh", "aman", "Ajay", "Hemkesh", "sandeep", "Darshan", "Virendra", "Shwetabh"]
>>> names2 = sorted(names)
>>> names2
['Ajay', 'Darshan', 'Hemkesh', 'Rishikesh', 'Shwetabh', 'Virendra', 'aman', 'sandeep']
>>> # But I don't want this o/p(here our intention is to treat 'a' same as 'A')
...
>>> names3 = sorted(names, key=lambda name:name.lower())
>>> names3
['Ajay', 'aman', 'Darshan', 'Hemkesh', 'Rishikesh', 'sandeep', 'Shwetabh', 'Virendra']
>>>
您可以定义自己的函数(可调用)并将其提供为键值。
亲爱的程序员,我为您编写了以下代码,请尝试理解它并评论您的解释。 我很高兴看到您的解释(很简单)。
>>> def validator(item):
... try:
... return int(item)
... except:
... return 0
...
>>> sorted(['gurmit', "0", 5, 2, 1, "front", -2, "great"], key=validator)
[-2, 'gurmit', '0', 'front', 'great', 1, 2, 5]
>>>
我希望它会有用。