[Python] Ancora sugli iteratori.

2020-03-03 Per discussione Gabriele Battaglia

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


Re: [Python] Ancora sugli iteratori.

2020-03-03 Per discussione Massimiliano della Rovere
nativamente no, ma puoi usare enumerate.

for index, value in enumerate(iterable):



Il giorno mar 3 mar 2020 alle ore 14:51 Gabriele Battaglia 
ha scritto:

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