46

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

クラスのspin()メソッドで文字列を循環させるために使用しました。Spinnerしたがって、タプルを循環させると、次のように出力され('|', '/', '-', '\\', '|', '/', '-')ます: 、、、、、、、、、、など...|/-\|/-|/

Python 3.0、3.1、3.2のリリースノートを検索しましたが、これに変更はありませんでした。これが変わったのはいつですか?以前と同じ機能を実現するための簡単な代替手段はありますか?

前もって感謝します。

4

2 に答える 2

70

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

ここには、Python3のヒントへの他のさまざまな移植とともに良い例があります。またnext()、Python2.xとPython3.xの他のさまざまなイディオムを比較します

于 2011-03-08T20:04:52.127 に答える
17

Python 3.xでは、イテレータにはこれ以上ありませんit.next()。代わりに使用next(it)してください。これはPython2.6以降でも機能します。内部的には、これはit.next()Python2.xおよびit.__next__()Python3.xで呼び出されます。

于 2011-03-08T20:02:30.417 に答える