Perché il risultato di Python sort () è come questo?

2

Potrei mancare qualcosa di ovvio qui, ma perché la funzione Python 2.x sorted () funziona così?

In [95]: l = [1, '5', 4, 2, '3', 'b', 'c', '-a']
In [96]: sorted(l)
Out[96]: [1, 2, 4, '-a', '3', '5', 'b', 'c']

Python 3 restituisce l'eccezione ( TypeError: unorderable types: str() < int() ), che mi aspetto più di questo risultato.

    
posta Vedran Krivokuća 04.11.2015 - 15:14
fonte

1 risposta

2

Sembra che i valori ASCII dei caratteri siano usati per ordinare in relazione ai numeri effettivi.

Dopo aver convertito i caratteri nei loro valori ASCII decimali, l'elenco ordinato assomiglia a questo:

[1, 2, 4,  '-a', '3', '5', 'b', 'c']
[1, 2, 4, 45 97,  51,  53,  98,  99]

Tieni presente che '-a' viene ordinato prima dal primo carattere, come è normale per un ordinamento "alfabetico".

    
risposta data 04.11.2015 - 15:19
fonte

Leggi altre domande sui tag