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.
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a