2011-03-08 12 views
30

まあ、私はitertools.cycle().next()メソッドをPython 2.6.6で使用していましたが、今は3.2に更新しました。itertools.cycle()オブジェクトにはメソッドがありません。next()itertools.cycle()。next()?

私はspin()メソッドSpinnerクラスの文字列を循環させるために使用しました。我々サイクルタプル('|', '/', '-', '\\', '|', '/', '-')のであれば、それが印刷されます:ように|/-\|/-|/と...

を私は、Python 3.0のリリースノートを検索しました、3.1および3.2であり、これに何ら変化は見られなかった。これが変わったときは?以前と同じ機能を実現するための簡単な方法はありますか?

ありがとうございます。

+1

+1「サイクル」のこの面白い使用例の場合: –

答えて

42

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

good example hereと一緒にpythonの3つのヒントへの移植があります。また、他のさまざまなnext()のイディオムをPython 2.xとPython 3.xの比較します。

+2

あなたは@Svenとほぼ同じことに答えました。あなたの答えはあなたの答えを保存しました。私はhttp://diveintopython3.org/...を知らなかった。答えとリンクをありがとう。 :) –

+0

うん - 私たちはおおよそ同じ時間に答えました。あなたが有用なリンクを見つけてうれしい、私はそれが良い参考資料であることがわかった。 – d0ugal

+0

'iter.next()'が削除されたのはなぜですか? –

14

Python 3.xでは、イテレータにはもうit.next()がありません。代わりにnext(it)を使用してください。これはPython 2.6以上でも動作します。内部的には、Python 2.xではit.next()、Python 3.xではit.__next__()が呼び出されます。