¿Por qué la tupla es más grande que una lista en python?

Considere el siguiente problema en Python:

>>> () < [] 

esta statement produce False y

 >>> () > [] 

cede el verdadero. Que yo sepa, [] es False , pero ¿qué es una tupla vacía?

Si escribimos

 >>> 1233 < (1,2) 

Conseguimos un valor True , como retorno. Pero por qué ?

Gracias

De los documentos :

Los operadores <,>, ==,> =, <= y! = Comparan los valores de dos objetos. Los objetos no necesitan tener el mismo tipo. Si ambos son números, se convierten a un tipo común. De lo contrario, los objetos de diferentes tipos siempre se comparan de forma desigual, y se ordenan de manera consistente pero arbitraria. Puede controlar el comportamiento de comparación de objetos de tipos no incorporados definiendo un método __cmp__ o métodos de comparación ricos como __gt__ , descritos en la sección 3.4.

(Esta definición inusual de comparación se usó para simplificar la definición de operaciones como la clasificación y los operadores in y no. En el futuro, es probable que las reglas de comparación para objetos de diferentes tipos cambien).

Cual es verdad. En Python 3 esto es un TypeError .

 () > [] --------------------------------------------------------------------------- TypeError Traceback (most recent call last)  in () ----> 1 () > [] TypeError: unorderable types: tuple() > list() 

De vuelta a python 2: los documentos enfatizan que este es un ordenamiento arbitrario pero consistente .

En cPython 2, los tipos desiguales se comparan por su nombre de tipo. Así que la tuple es “mayor que” list , lexicográficamente.

Este es un detalle de implementación de CPython (2.x), como se documenta en Tipos incorporados – Comparaciones :

Detalle de implementación de CPython : los objetos de diferentes tipos, excepto los números, están ordenados por sus nombres de tipo; los objetos del mismo tipo que no admiten una comparación adecuada están ordenados por su dirección.

Por lo tanto, cualquier tupla se compara más que cualquier lista porque 'tuple' > 'list' .

Esto ya no se cumple en CPython 3, y nunca se aplicó para otras implementaciones de Python 2.x.

Refiriéndose a la documentación :

La mayoría de los otros objetos de tipos incorporados se comparan de forma desigual a menos que sean el mismo objeto; la elección de si un objeto se considera más pequeño o más grande que otro se realiza de manera arbitraria pero consistente dentro de una ejecución de un progtwig.

Así que parece ser dependiente de la implementación. Por ejemplo en CPython :

Los objetos de diferentes tipos, excepto los números, están ordenados por sus nombres de tipo; los objetos del mismo tipo que no admiten una comparación adecuada están ordenados por su dirección.

Esto podría depender de la implementación y creo que no hay una razón directa para esto. Python 3.X prohíbe la comparación entre dos tipos diferentes todos juntos.

Esto es porque Python 2.x usa el método __cmp__() .
Python 3.x no utilizará este método.

Está utilizando una versión de python inferior a 3.0.
Con la versión 3.x de Python, habrá una excepción:
TypeError: unorderalbe tipos …