- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的一位同事正在使用内置的 max函数(在 Python 2.7 上),他发现了一个奇怪的行为。
错误地,他没有使用关键字参数 key(如 key=lambda n: n
)对作为参数传递的列表进行预排序,他做了:
>>> max([1,2,3,3], lambda n : n)
[1, 2, 3, 3]
他正在做的事情在文档中被解释为:
如果提供了两个或更多位置参数,则返回最大的位置参数。,所以现在我很好奇为什么会这样:
>>> (lambda n:n) < []
True
>>> def hello():
... pass
...
>>> hello < []
True
>>> len(hello)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'function' has no len()
我知道这没什么大不了的,但如果任何 stackoverflowers 可以解释这些比较是如何在内部进行的(或指出我可以找到该信息的方向),我将不胜感激. :-)
提前致谢!
最佳答案
Python 2 相当随意地对不同类型的对象进行排序。它这样做是为了使列表始终 可排序,无论内容如何。比较结果是哪个方向并不重要,重要的是那个总是赢。碰巧的是,C implementation退回到比较类型名称; lambda
的类型名称是 function
,排在 list
之前。
在 Python 3 中,您的代码会引发异常:
>>> (lambda n: n) < []
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: function() < list()
因为正如您发现的那样,支持任意比较主要会导致难以破解的错误。
关于Python 好奇心 : [] > lambda n: n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17864973/
当我调用这个 promise 时,输出与函数调用的顺序不匹配。 .then出现在 .catch 之前, 即使 promise 与 .then之后被调用。这是什么原因? const verifier =
在 MIPS 程序集中清除寄存器 (=0) 的最快方法是什么? 一些例子: xor $t0, $t0, $t0 and $t0, $t0, $0 move $t0, $0 li
欧拉计划 - 3 --- 问题 我是编程艺术的初学者,我开始解决 Project Euler 问题。 我尝试用 C 语言解决第三个问题,但我不明白为什么它不起作用。 #include
我有一个相当简单但庞大的系统设置。它将数据存储在 void* 数组中,因为它存储的数据可能在 float 或 double 之间变化,具体取决于需要多少精度。 只是执行 delete [] data
谁能解释一下 mysqli multi_query() 的用途是什么?我不明白一个简单的 MySQLi 查询是否支持多语句,或者我是否被迫使用 multi_query() 来执行这样的查询: S
我有两个问题。其中一个对我有意义,另一个对我没有意义。第一个: SELECT gender AS 'Gender', count(*) AS '#' FROM registrations
我的一位同事正在使用内置的 max函数(在 Python 2.7 上),他发现了一个奇怪的行为。 错误地,他没有使用关键字参数 key(如 key=lambda n: n)对作为参数传递的列表进行预排
我有两个问题。其中一个对我有意义,另一个对我没有意义。第一个: SELECT gender AS 'Gender', count(*) AS '#' FROM registrations
我是 python 新手,正在为我的工作职能学习它。我正在遵循一个非常基本的初学者教程,其中大部分看起来非常熟悉并且与我使用的其他语言相似。但是......当我做非常简单的事情时 print('hel
一些编码实验(在尝试找到编码问题的较短答案时进行的)导致了一些有趣的惊喜: seq 2 | while head -n 1 ; do : ; done 输出(点击 Control-C 否则它将永远浪费
我目前正在进行一些最后的优化,主要是为了娱乐和学习,并发现了一些给我留下几个问题的东西。 首先是问题: 当我通过使用 DynamicMethod 在内存中构建方法时,并使用调试器,在反汇编 View
我想知道为什么分别相当于乘法和除法的移位运算符(>)的优先级低于加法运算符,例如“+”。 换句话说: int a = 1 + 2 * 8; //yields 17 鉴于: int a = 1 + 2
我一直在研究一些 .NET 功能(即管道、内存和数组池)以实现高速文件读取/解析。在使用 Array.Copy、Buffer.BlockCopy 和 ReadOnlySequence.CopyTo 时
这个问题更多是出于好奇而不是真正的问题。考虑以下代码(C# 4.0,如果重要的话): class Program { static Point myPoint = new Point(3, 5);
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: how to sum a large number of float number? 我有一个矩阵“x”,它
有人可以解释为什么这些在 Python 2.7.4 中输出不同的东西吗?他们在 python 3.3.1 中输出相同的东西。我只是想知道这是否是 2.7 中已在 3 中修复的错误,或者是否由于语言的某
我是一名优秀的程序员,十分优秀!