当使用像排序,和一些内置的功能...我注意到的使用key=lambda
什么是拉姆达? 它是如何工作的?
用什么样的功能键=拉姆达?
有没有像其他任何键值, key=?
当使用像排序,和一些内置的功能...我注意到的使用key=lambda
什么是拉姆达? 它是如何工作的?
用什么样的功能键=拉姆达?
有没有像其他任何键值, key=?
一个lambda
是一个匿名函数:
>>> f = lambda: 'foo'
>>> print f()
foo
它通常在函数中使用诸如sorted()
称取一个可调用作为参数(通常是key
的关键字的参数)。 你可以提供现有的功能,而不是一个lambda
那里,只要它是一个可调用对象。
取sorted()
函数 ,例如, 它会返回排序的顺序给出迭代:
>>> sorted(['Some', 'words', 'sort', 'differently'])
['Some', 'differently', 'sort', 'words']
但被小写的话之前排序大写的单词。 使用key
关键字,您可以更改每个条目所以它会以不同的排序。 我们可以排序,例如在小写所有的话:
>>> def lowercased(word): return word.lower()
...
>>> lowercased('Some')
'some'
>>> sorted(['Some', 'words', 'sort', 'differently'], key=lowercased)
['differently', 'Some', 'sort', 'words']
我们必须创建一个单独的功能,我们无法内联def lowercased()
一线进sorted()
表达式:
>>> sorted(['Some', 'words', 'sort', 'differently'], key=def lowercased(word): return word.lower())
File "<stdin>", line 1
sorted(['Some', 'words', 'sort', 'differently'], key=def lowercased(word): return word.lower())
^
SyntaxError: invalid syntax
甲lambda
在另一方面,可以直接指定,在直列sorted()
表达:
>>> sorted(['Some', 'words', 'sort', 'differently'], key=lambda word: word.lower())
['differently', 'Some', 'sort', 'words']
lambda表达式被限制为仅一个表达,其结果是返回值。
有很多Python库的地方,包括内置的功能,即采取可调用的关键字或位置参数的负荷。 有太多的名字在这里,他们往往扮演着不同的角色。
LAMBDA可以是任何功能。 所以,如果你有一个函数
def compare_person(a):
return a.age
你可以排序的人(每个具有年龄属性)这样的列表:
sorted(personArray, key=compare_person)
这样一来,该列表会按年龄升序进行排序。
该参数被称为拉姆达因为Python已经在飞行定义这种功能一记漂亮的拉姆达关键字。 相反,定义一个函数compare_person和传递,为排序,你也可以这样写:
sorted(personArray, key=lambda a: a.age)
它做同样的事情。
在Python, 拉姆达是用来定义匿名函数 (没有名字的函数)的关键词,这就是为什么它们被称为lambda函数 。
基本上,它是用于限定能/不能采取参数(一个或多个)和数据 / 表达的返回值匿名函数 。 让我们来看一个例子 。
>>> # Defining a lambda function that takes 2 parameters(as integer) and returns their sum
...
>>> lambda num1, num2: num1 + num2
<function <lambda> 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
>>>
现在让我给你的第二个问题的回答。 第1回答也很大。 这是我自己的方式与其他的例子来解释。
假设我们有一个项目( 整数和字符串与数字内容 )的列表如下,
nums = ["2", 1, 3, 4, "5", "8", "-1", "-10"]
我想用排序()函数,让我们看看会发生什么对它进行排序。
>>> 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']
这意味着我们需要一些策略 (这样来分类可以把我们的字符串的项目作为一个整数),以实现这一目标。 这就是为什么使用的关键关键字参数。 请看下面的一个。
>>> nums = ["2", 1, 3, 4, "5", "8", "-1", "-10"]
>>> sorted(nums, key=int)
['-10', '-1', 1, '2', 3, 4, '5', '8']
>>>
让我们用拉姆达功能键的值
>>> 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]
>>>
我希望这将是有益的 。
>>> sorted(['Some', 'words', 'sort', 'differently'], key=lambda word: word.lower())
实际上,上述代码可以是:
>>> sorted(['Some','words','sort','differently'],key=str.lower)
据https://docs.python.org/2/library/functions.html?highlight=sorted#sorted ,key指定用于提取从每个列表元素的比较关键一个参数的函数:键= STR。降低。 默认值是无(元件直接比较)。