小能豆

为什么在 Python 中元组比列表大?

py

考虑 Python 中的以下问题:

>>> () < []

这条语句产生False

>>> () > [] 

结果是 True。据我所知,[]equals False,但是空元组是什么?

如果我们输入

>>> 1233 < (1,2)

我们得到一个True作为返回值。但是为什么呢?


阅读 18

收藏
2024-11-15

共1个答案

小能豆

来自文档

运算符 <、>、==、>=、<= 和 != 比较两个对象的值。对象不必具有相同的类型。如果两者都是数字,则它们将转换为通用类型。否则,不同类型的对象始终比较不相等,并且顺序一致但任意。您可以通过定义方法__cmp__或丰富的比较方法来控制非内置类型对象的比较行为,如__gt__第 3.4 节中所述。

(这种不寻常的比较定义是为了简化排序以及 in 和 not in 运算符等操作的定义。 将来,不同类型的对象的比较规则可能会发生变化。)

这是真的。在 Python 3 中,这是一个TypeError

() > []
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-d2326cfc55a3> in <module>()
----> 1 () > []

TypeError: unorderable types: tuple() > list()

回到python 2:文档强调这是一个任意但一致的排序。

cPython 2 中,不相等的类型通过其类型名称进行比较。按字典顺序排列的tuple“大于”也是如此list

2024-11-15