Desde el docs:
La comparación utiliza lexicográfico orden: primero los dos primeros artículos se comparan, y si difieren esta determina el resultado de la comparación ; si son iguales, se comparan los siguientes dos artículos de , y por lo tanto en adelante, hasta que cualquier secuencia sea agotada.
también:
orden lexicográfico de cuerdas utiliza el número de puntos de código Unicode para ordenar caracteres individuales.
o en Python 2:
orden lexicográfico de cuerdas utiliza el ordenamiento ASCII para caracteres individuales.
Como un ejemplo:
>>> 'abc' > 'bac'
False
>>> ord('a'), ord('b')
(97, 98)
El resultado False
se devuelve tan pronto como a
resulta ser menos de b
. Los elementos adicionales no se comparan (como puede ver para los segundos artículos: b
>a
es True
).
ser consciente de mayúsculas y las minúsculas:
>>> [(x, ord(x)) for x in abc]
[('a', 97), ('b', 98), ('c', 99), ('d', 100), ('e', 101), ('f', 102), ('g', 103), ('h', 104), ('i', 105), ('j', 106), ('k', 107), ('l', 108), ('m', 109), ('n', 110), ('o', 111), ('p', 112), ('q', 113), ('r', 114), ('s', 115), ('t', 116), ('u', 117), ('v', 118), ('w', 119), ('x', 120), ('y', 121), ('z', 122)]
>>> [(x, ord(x)) for x in abc.upper()]
[('A', 65), ('B', 66), ('C', 67), ('D', 68), ('E', 69), ('F', 70), ('G', 71), ('H', 72), ('I', 73), ('J', 74), ('K', 75), ('L', 76), ('M', 77), ('N', 78), ('O', 79), ('P', 80), ('Q', 81), ('R', 82), ('S', 83), ('T', 84), ('U', 85), ('V', 86), ('W', 87), ('X', 88), ('Y', 89), ('Z', 90)]
¿Qué? ¿De qué otro modo se puede ordenar de otra forma que no sea de izquierda a derecha? –
@ S.Lott: de derecha a izquierda. No es que alguien lo haga, pero no es la única posibilidad. – katrielalex
@katrielalex: si permite eso, debe permitir las posibilidades al azar e incluso solo e impar y todas las demás. Entonces tendría que "parametrizar" al operador para elegir qué orden. Si va a haber un valor predeterminado, ¿cómo podría ser distinto de izquierda a derecha? –