当前位置: 首页 > 面试题库 >

什么是key = lambda

卫弘懿
2023-03-14
问题内容

在使用一些内置函数(如sorted,sum)时,我注意到 key=lambda

什么是lambda?它是如何工作的?

还有哪些其他功能使用key = lambda?

还有其他关键值吗? key=?


问题答案:

Alambda是一个匿名函数:

>>> f = lambda: 'foo'
>>> print f()
foo

它经常用在诸如以sorted()callable作为参数(通常是key关键字形参)的函数中。您可以提供一个现有的函数,而不是lambda那里的函数,只要它是一个可调用的对象即可。

sorted()功能为例。它将以排序顺序返回给定的iterable:

>>> 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库中有很多地方,包括内置函数,这些地方都带有可调用的关键字或位置参数。这里要说的太多了,它们通常扮演着不同的角色。



 类似资料:
  • 这个功能有什么用处?如果我想在字典中查找与键相关联的值,我可以执行,它返回相同的内容:

  • 问题内容: 今天,我遇到了该方法,该方法在字典中给定键,然后返回关联的值。 此功能用于什么目的?如果我想找到与字典中的键相关联的值,我可以这样做,并且它返回相同的内容: 问题答案: 如果密钥丢失,它允许您提供默认值: 返回(无论您选择的是什么),而 会提出一个。 如果省略,则为,这样 返回就像

  • 问题内容: 在此MySQL表定义中: 什么是关键字是什么意思?它不是主键,也不是外键,所以它仅仅是索引吗?如果是这样,用这种方法创建的这种索引有何特别之处? 问题答案: 从http://dev.mysql.com/doc/refman/5.1/en/create- table.html 引用 所以是一个;)

  • Azure Key Vault为什么或者如何安全?我需要在服务器上存储密钥URI、客户端Id和客户端机密,因此,如果任何人授予对承载应用程序的服务器的访问权限,他将能够访问存储在密钥库中的密钥和机密。这意味着将它们存储在服务器上是一样安全的,对吗?

  • 问题内容: 什么是决定不具有的接口完全通用的get方法背后的原因。 为了澄清这个问题,方法的签名是 代替 我想知道为什么(与相同)。 问题答案: 正如其他人所提到的,之类的原因不是通用的,因为你要检索的条目的键不必与你传递给的对象的类型相同;方法的规范仅要求它们相等。这从方法如何将对象作为参数(而不仅仅是与对象相同的类型)中得出。 尽管通常已经定义了许多类,以便其对象只能等于其自己的类的对象,这确

  • 在运行一个数字积分器时,我注意到根据我在字典中提取字段值的方式,速度有明显的不同 在我的系统上,我注意到以下差异(使用 iPython) 相比于 这似乎是一个很小的差异,但是对于某些阵列来说,这种差异甚至更大。是什么导致了这种行为,有什么方法可以改变我对< code>get()函数的使用吗?