ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | Espressioni | Comandi | Funzioni | Moduli | Classi | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Corso Python
Python: I Comandi
Indentazione
if
while
for
Particolarità
Print


<<< for >>>

I comandi che abbiamo visto prima sono tipici di altri linguaggi di programmazione. L'unica cosa particolare è la sintassi specifica di Python. È del tutto specifico di Python il ciclo for. Questo particolare costrutto tende a variare dal linguaggio a linguaggio, a seconda delle strutture dati utilizzate in esso. La caratteristica di Python è quella di ciclare sulle sequenze. In particolare data una sequenza,che sia una stringa o una lista, il ciclo effettua una iterazione per ogni elemento. Per esempio consideriamo:

l = ['uno','due','tre']
for i in l:
  print i

Il risultato è che vengono stampate le tre stringhe della lista.

La domanda che sorge spontanea a questo punto, è: come si fa a fare un ciclo numerico banale come quello da 1 a 10? Una risposta potrebbe essere quella di utilizzare il ciclo while. La logica del Python vuole che sia un solo modo per far le cose (esattamente al contrario del Perl), e quindi in generale queste è la via preferenziale. Comunque abbiamo un'altra opzione, che è quella di generare una lista dei numeri da 1 a 10, e di iterare su di essa. Questo si ottiene con la funzione range:

for i in range(1O):
  print i+1

La funzione range(10) crea una lista i numeri da 0 a 9; infatti il limite inferiore è zero per default, mentre il numero specificato è il limite superiore, che non viene raggiunto. Se si vuole ottenere una lista che vada da 1 a 10 si deve utilizzare range(1,11): estremo inferiore incluso, estremo superiore escluso.

Quando si fa così occorre fare attenzione che si possono ottemere della lista molto grandi che occupano memoria. Esiste una funzione chiamata xrange(), che invece ritorna un "generatore di numeri". Tecnicamente è un oggetto che si comporta come una sequenza. Utilizzando questo oggetto si occupa meno memoria, anche se è leggermente più lento. Probabilmente conviene utilizzare nella maggior parte dei casi range, ricorrendo alla xrange quando si devono eseguire cicli molto lunghi.

Quando vogliamo possiamo iterare non solo su liste ma anche su tabelle: ovvero le hash map. Però occorre selezionare le chiavi, e accedere a ciascun elemento usandola chiave, come segue (spiegheremo il "%" in seguito):

for i in tel.keys():
	print "%s=%d" % (i,tel[i])

Un altro modo di iterare è quello di "snocciolare" gli elementi di una hash map. Utilizzando la funzione items() si ottengono tutti gli elementi della hash map come una lista di tuple:

for k,v in tel.items():
	print "%s=%d" % (k,v)

Come si nota si può usare come variabile di controllo una tupla, e il meccanismo è lo stesso dell'appplicane del principio

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com