>>> gen = iter(['a','b','c','d'])
>>> for i, line in enumerate(gen):
... print str(i) + ', ' + line
... if (i == 1):
... print 'saw 1'
... print 'next: ' + gen.next()
...
0, a
1, b
saw 1
next: c
2, d
ご覧のとおり、私は理解として見たいと思います3, d
(私が保持したい不変式、もしそうなら: 他にどのような理由があるのでしょうenumerate
か?) はi
、 のインデックスに対応しますline
。はそれnext()
をダンプします。
悲しいことに、この試みは失敗しi
、for ループがそうあるべきだと考えるものに設定されます。
>>> gen = iter(['a','b','c','d'])
>>> for i, line in enumerate(gen):
... print str(i) + ', ' + line
... if (i == 1):
... print 'saw 1'
... print 'next: ' + gen.next()
... i = i + 1
...
0, a
1, b
saw 1
next: c
2, d
答えは何ですか?インデックスenumerate
を手動で追跡するのをやめますか? この種の制御フローに対応できる高レベルのプログラミングがあることを期待していました。
私はファイルを解析していて、次の行が存在する場合はその内容を読み取る必要がある場合があります (したがってnext()
ジェネレーターを呼び出します) が、結果としてループ制御フローを処理する必要があります。
私はすでにそれを行う方法を知っているので、最初にジェネレーターを読んで完全に評価することによってこれを行う回答は受け入れられません (ただし、そのような回答を自由に投稿してください。賛成します)。