[Python] Ancora sugli iteratori.

Gabriele Battaglia iz4apu a libero.it
Mar 3 Mar 2020 14:49:39 CET


Buon pomeriggio a tutti.
Sono alle prese con il concetto che sta alla base degli iteratori.
Nel mio caso specifico si tratta di un oggetto os.scandir(base_dir) che 
contiene gli oggetti di una directory ma credo andrebbe bene per 
quallsiasi altro oggetto iteratore.

Fino ad ora ho compreso che un ciclo for sull'oggetto, itera i suoi 
elementi costitutivi, in maniera automatica. Volendo invece richiamare 
manualmente l'elemento successivo si può invocare il metodo __next__.

Esiste però un modo per sapere l'indice dell'oggetto che sto ottenendo? 
Cioè, quale oggetto di quanti (tipo oggetto x su un totale di n).

E poi, è possibile spostare il puntatore che itera all'interno 
dell'iterabile e punta il prossimo elemento da restituire?

Ad esempio, se eseguo un ciclo for sul mio oggetto os.scandir e poi ne 
eseguo un secondo: il primo funziona, il secondo no perchè il puntatore 
è già arrivato a restituire l'ultimo elemento e, immagino, vada 
reinizializzato.
Anche una cosa del tipo:

numero_elementi = len(list(os.scandir(base_dir)))

Funziona ma sembra portare il puntatore/itratore sull'ultimo elemento in 
quanto se eseguo poi un ciclo for su os.scandir, non ottengo nulla.

Qualcuno ha voglia di darmi un indizio per chiarirmi le idee?

-- 
Gabriele Battaglia, IZ4APU (Libero)
Sent from TB on Windows 10, Genus Bononiae's computer.


Maggiori informazioni sulla lista Python