在使用一些内置函数(如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()函数的使用吗?