[PIPython] Ordinare elementi di una lista

Paolo Mossino mox79
Lun 17 Gen 2005 09:43:12 CET


Ciao Arianna,

Arianna Microchip wrote:
> Ora sto provando a fare un'altra cosetta.... Decido di inserire X numeri
> in una lista. Inserisco i numeri ad uno ad uno e se ne metto uno che ho
> già inserito, python me lo segnala e mi chiede un altro numero in modo
> che i numeri finali siano X come avevo scelto. Per esempio, se scelgo di
> inserire 15 numeri, se come secondo numero avevo messo il 4, e come
> decimo rimetto il 4, lui me lo segnala e attende ancora il decimo numero!

Se NON vuoi i duplicati, ma ti interessa principalmente lavorare sui numeri 
inseriti stai sbagliando approccio :)
A te non serve una lista, ma un dizionario, in cui i valori da inserire 
compaiono come chiavi usi il valore delle entry nel dizionario.

Questo presuppone che tu lavori frequentemente con i valori inseriti e 
occasionalmente con la posizione (relativa) di questi. Se invece è il contrario.

<code>
listanumeri = {}
numeri = input('Quanti numeri vuoi inserire? ')
pos = 0
for n in range(numeri):
     valore = input('Inserisci il numero ' + str(n+1) + ': ')
     if not listanumeri.has_key(valore):
         pos += 1
         listanumeri[valore] = pos
</code>

Se vuoi ottenere la lista delle chiavi fai

lista_valori = d.keys()

Per stanpare chiave e posizione, ordinati per chiave, fai:

<code>
k = listanumeri.keys()
k.sort()

for i in k:
     print "%d: %d" % (listanumeri[k], k)
</code>


Supponendo che tu lavori principalmente sulle posizioni relative di 
inserimento, puoi controllare velocemente se ci sono dei duplicati in questo 
modo:

<code>
if not valore in listanumeri:
     listanumeri.append(valore)
</code>

My two cents,

-- 
  ,___,    ~ Paolo Mossino  (Alexander)         e-m a il: mox79 a gmx.it ~
  (0v0)    ~ Jabber ID : alexander a jabber.linux.it - ICQ #: 28473944 ~
  (_^((\   ~ "My crime is judging people by what they say and think, ~
  -"-"-\\  ~ not what they look like"          [Mentor's Last Words] ~


More information about the Python mailing list