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