web-dev-qa-db-ja.com

itertools.cycle()。next()?

さて、私はPython 2.6.6でitertools.cycle().next()メソッドを使用していましたが、3.2に更新したので、itertools.cycle()オブジェクトにはメソッドがないことに気付きましたnext()

これを使用して、Spinnerクラスのspin() methodで文字列を循環させました。したがって、タプルを循環させると、('|', '/', '-', '\\', '|', '/', '-')、印刷されます:|/-\|/-|/ 等々...

Python 3.0、3.1、および3.2のリリースノートを検索しましたが、これに変更はありませんでした。これが変更されたのはいつですか?以前と同じ機能を実現する簡単な方法はありますか? ?

前もって感謝します。

42
Paulo Freitas

iter.next()はpythonで削除されました3.代わりにnext(iter)を使用してください。したがって、例ではitertools.cycle().next()next(itertools.cycle())に変更します

pythonへの他のさまざまな移植とともに ここでの良い例 が3つのヒントです。また、python 2.xとpython 3.xの他のさまざまなnext()イディオムを比較します。

63
d0ugal

Python 3.xでは、イテレータにit.next()がなくなりました。代わりにnext(it)を使用してください。これはPython 2.6以上。内部的には、これはit.next() in Python 2.x and it.__next__() in Python3.x。

17
Sven Marnach