[Python] istruzione yield

paride_900 a libero.it paride_900 a libero.it
Ven 18 Maggio 2012 13:19:11 CEST


Salve ragazzi

navigando un po in rete mi sono imbattuto in questo pezzo di codice Python:


def splitlist(lista,lunghezza):
    i=0
    while 1:
        fine=i+lunghezza
        if len(lista)<=i: return

        yield lista[i:fine]
        i=fine
        
print list(splitlist([1,2,3,4],2))

Vi spiego fin dove sono riuscito a capirlo io.

Si crea la funzione 'splitlist' con i parametri 'lista' e 'lunghezza'
Si crea la variabile 'i' e gli viene assegnato il valore zero.
Si crea un ciclo while 1, ovvero fino a che la condizione sarà 1.
Si crea la variabile 'fine' e gli vengono assegnati le variabili 'i' e 
'lunghezza' da sommare, quindi a questo punto abbiamo la variabile 'fine' che 
vale due.
Quindi si passa all'istruzione 'if' che verifica se gli elementi della lista 
sono minori o uguali a 'i', cioè a zero. Se è vero che sono minori o uguali 
ritornerà la lista vuota.

Dall'istruzione sotto in poi non riesco a capirci più nulla.
In particolare non ho capito il funzionamento dell'istruzione yield, da quel 
che ho letto in rete si tratta di un generatore o una cosa del genere ma non ho 
capito bene come agisce.

GRAZIE
RESTO IN ATTESA DI VOSTRI AIUTI


Maggiori informazioni sulla lista Python