web-dev-qa-db-fra.com

itertools.cycle (). next ()?

Eh bien, j'utilisais la méthode itertools.cycle().next() avec Python 2.6.6, mais maintenant que j'ai mis à jour vers 3.2, j'ai remarqué que l'objet itertools.cycle() n'avait pas de méthode next().

Je l'ai utilisé pour faire défiler une chaîne dans la méthode spin() d'une classe Spinner. Donc, si nous parcourons le Tuple ('|', '/', '-', '\\', '|', '/', '-'), il imprimera: |, /, -, \, |, /, -, |, / etc...

J'ai recherché les notes de publication de Python 3.0, 3.1 et 3.2 et je n'ai remarqué aucun changement à ce sujet. Quand cela a changé? Y a-t-il une alternative simple pour obtenir les mêmes fonctionnalités qu'auparavant ?

Merci d'avance.

42
Paulo Freitas

iter.next() a été supprimé dans python 3. Utilisez plutôt next(iter). Dans votre exemple, remplacez itertools.cycle().next() par next(itertools.cycle())

Il y a un bon exemple ici ainsi que divers autres portages vers python 3 astuces. Il compare également divers autres idiomes next() dans python 2.x vs python 3.x

63
d0ugal

Dans Python 3.x, les itérateurs n'ont plus it.next(). Utilisez plutôt next(it), qui fonctionne également dans Python 2.6 ou supérieur. En interne, cela appellera it.next() in Python 2.x et it.__next__() in Python 3.x.

17
Sven Marnach