Dal docs:
Il comparatore utilizza lessicografico ordine: prima i primi due elementi vengono confrontati, e se differiscono questa determina l'esito del confronto ; se sono uguali, vengono confrontati i due articoli successivi, , e quindi , fino a quando la sequenza non è esaurita.
anche:
ordinamento lessicografico per le stringhe usa il numero di punto di codice Unicode per ordinare i singoli caratteri.
o Python 2:
ordinamento lessicografico per le stringhe usa l'ordinamento ASCII per i singoli caratteri.
Ad esempio:
>>> 'abc' > 'bac'
False
>>> ord('a'), ord('b')
(97, 98)
Il risultato False
viene restituito appena a
, risulta essere inferiore a b
. Gli altri articoli non vengono confrontati (come puoi vedere per i secondi articoli: b
>a
è True
).
attenzione in situazioni di bassa e maiuscolo:
>>> [(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)]
Cosa? In quale altro modo l'ordinamento può essere definito diverso da sinistra-a-destra? –
@ S.Lott: da destra a sinistra. Non che qualcuno lo farebbe, ma non è l'unica possibilità. – katrielalex
@katrielalex: Se lo permetti, dovresti consentire la possibilità casuale e solo-sola e solo-dispari e ogni altra possibilità. Quindi dovresti "parametrizzare" l'operatore per scegliere quale ordine. Se ci sarà un default, come potrebbe essere diverso da sinistra a destra? –