イテレータの異なるインデックス位置から複数の任意の値を取得するにはどうすればよいですか?
リスト内のジェネレーターの次のn個の値を取得する方法(python)およびPythonでジェネレーターのn番目の項目を取得するitertools.islice
方法では、イテレーターから任意の要素または連続サブセットを取得するための使用について説明します。しかし、イテレータのさまざまな位置から複数の任意の要素が必要な場合はどうなりislice
ますか?ここで、のステップ引数を使用することはできません。
私はプロジェクトオイラーの問題40を解決しようとしています。連結された整数の文字列を生成しました
iteration = (i for i in ''.join(map(str, (i for i in xrange(1,10**6)))))
ここで、インデックス1、10、100、1000、10000、100000、1000000の要素を1から数えて取得したいと思います。をislice
呼び出すたびにnext
現在の値が右にシフトするため、ここでは使用できませんでした。例えば
next(islice(iteration, 1, 2)) + next(islice(iteration, 3, 4))
'24'の代わりに'26'を生成します。
更新(25.11.12、4:43 UTC + 0):
すべての提案をありがとう。私の現在のコードは次のようになります:
it = (i for i in ''.join(map(str, (i for i in xrange(1,10**6)))))
ds = [int(nth(it, 10**i-10**(i-1)-1)) for i in range(7)]
return product(ds)
の醜い議論nth
は、0、8、89、899、8999などのシーケンスを生成することです。