考虑Python中的以下问题:
>>> () < []
Run Code Online (Sandbox Code Playgroud)
这句话产量False和
>>> () > []
Run Code Online (Sandbox Code Playgroud)
收益真实.据我所知,[]等于False,但什么是空元组?
如果我们输入
>>> 1233 < (1,2)
Run Code Online (Sandbox Code Playgroud)
我们得到一个True,作为返回值.但为什么 ?
谢谢
来自文档:
运算符 <、>、==、>=、<= 和 != 比较两个对象的值。这些对象不必具有相同的类型。如果两者都是数字,则将它们转换为通用类型。否则,不同类型的对象总是比较不相等,并且顺序一致但任意。
__cmp__您可以通过定义方法或丰富的比较方法(如3.4 节中所述)来控制非内置类型的对象的比较行为__gt__。(这种不寻常的比较定义用于简化排序以及 in 和 not in 运算符等操作的定义。 将来,不同类型对象的比较规则可能会改变。)
这是真的。在 python 3 中,这是一个TypeError.
() > []
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-d2326cfc55a3> in <module>()
----> 1 () > []
TypeError: unorderable types: tuple() > list()
Run Code Online (Sandbox Code Playgroud)
回到 python 2:文档强调这是一个任意但一致的顺序。
在cPython 2 中,不相等的类型通过类型名称进行比较。tuple从字典顺序来看, “大于”也是如此list。
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |