[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