On 07/05/2017 08:53 PM, Franky gmail wrote: > Ciao, > > Leggendo la pep-0234, in sintesi un oggetto iteratore deve avere due > metodi: oggetto.__iter__() e oggetto.__next__). correggetemi se ho > inteso male. > > faccio un esempio: > > creo una lista lista=['pippo', 'pluto', 'paperoga'] > > hasattr(lista,'__iter__') # vero > > hasattr(lista,'__next__') # falso > > quindi una lista (succede la stessa cosa anche con un set) non è un > iteratore perchè non possiede entrambi i metodi sopraccitati. Però se > creo un oggetto di tipo lista, possiede entrambi i metodi: > > lista1 = lista.__iter__() >
lista1 è un'iteratore, non più una lista e il metodo __iter__ serve appunto per creare iteratori: iteratore_lista = iter(lista) next(iteratore_lista) # 'pippo' next(iteratore_lista) # 'pluto' next(iteratore_lista) # 'paperoga' next(iteratore_lista) # raise StopIteration comunque per capire bene la tematica degli iteratori (e dei generatori) a me è stato utile questo articolo: http://nvie.com/posts/iterators-vs-generators/ (NB: la figura ad inizio articolo me la sono stampata e appesa bacheca per quando mi vengono dei dubbi ...) _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python