Forse sono caduto vittima di disinformazione sul web, ma penso che sia più probabile che abbia frainteso qualcosa. Basato su ciò che ho imparato finora, range() è un generatore e i generatori possono essere utilizzati come iteratori. Tuttavia, questo codice:Se range() è un generatore in Python 3.3, perché non posso chiamare next() su un intervallo?
myrange = range(10)
print(next(myrange))
mi dà questo errore:
TypeError: 'range' object is not an iterator
Che cosa mi manca qui? Mi aspettavo che questo stampasse 0 e per passare al valore successivo in myrange
. Sono nuovo di Python, quindi per favore accetta le mie scuse per la domanda piuttosto semplice, ma non ho trovato una buona spiegazione altrove.
Vedere http://stackoverflow.com/q/13054057/395760 per la distinzione tra iteratori e le cose che si possono iterare su in un 'ciclo for'. – delnan
Sarebbe corretto dire che i generatori sono iterabili, ma non iteratori? – Jeff
@Jeff Iterables sono oggetti su cui è possibile utilizzare 'iter' per ottenere un iteratore. Gli iteratori sono oggetti che possono essere ripetuti usando 'next'. I generatori sono una categoria di iteratori (funzioni generatore ed espressioni generatore). Almeno questo è quello che penso ... –