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

为什么在python中元组比列表大?,python,python-2.7,Python,Python 2.7,考虑Python中的以下问题: >>> () < [] 结果是真的。据我所知,[]等于False,但什么是空元组 如果我们打字 >>> 1233 < (1,2) >>1233=,[] --------------------------------------------------------------------------- TypeError回溯(最近一次调用上次) 在() ----> 1 () > [] TypeError:无序类型

考虑Python中的以下问题:

>>> () < []
结果是真的。据我所知,
[]
等于
False
,但什么是空元组

如果我们打字

>>> 1233 < (1,2)
>>1233<(1,2)
我们得到一个
True
,作为返回值。但是为什么呢


谢谢

这可能取决于实现,我认为没有直接原因。 Python3.X禁止同时对两种不同类型进行比较。

来自:

运算符,==,>=,[] --------------------------------------------------------------------------- TypeError回溯(最近一次调用上次) 在() ----> 1 () > [] TypeError:无序类型:tuple()>list() 回到Python2:文档强调这是一种任意但一致的排序

在第2种情况下,通过类型名比较不同的类型。因此,元组在字典上是“大于”
list

这是一个CPython(2.x)实现细节,如中所述:

CPython实现细节:除数字以外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序

因此,任何元组的比较都大于任何列表,因为
'tuple'>'list'


这在CPython 3中不再适用,在Python 2.x的其他实现中也从未适用过。

这是因为Python 2.x使用方法
\uu cmp\uu()

Python3.x不会使用此方法

您正在使用低于3.0的python版本。
对于python版本3.x,将出现一个例外:
类型错误:无序类型…

指的是:

大多数其他内置类型的对象比较不相等,除非它们是相同的对象;一个对象比另一个对象小还是大的选择是任意的,但在程序的一次执行中是一致的

因此,它似乎依赖于实现。例如:

除数字外,不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序


只有python2中的
True
。@user995394@BartoszKP这是python2,所以@用户995394您说它只给出了
True
,而在我给出的链接中,它显然是
False
[]
不等于
False
。它的逻辑计算结果为
False
,与
()
一样。所以
bool(())==bool([])
返回
True
>>> 1233 < (1,2)
() > []
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-d2326cfc55a3> in <module>()
----> 1 () > []

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