如何從迭代器中的不同索引位置獲取多個任意值?從Python生成器獲取多個單獨的值
How to get the n next values of a generator in a list (python)和Get the nth item of a generator in Python描述了使用itertools.islice
從迭代器獲取任意元素或連續子集。但是如果我想要迭代器中不同位置的多個任意元素,那麼你不能只使用islice
的step參數?
我想解決項目歐拉的problem 40。我產生級聯整數的字符串
iteration = (i for i in ''.join(map(str, (i for i in xrange(1,10**6)))))
的,現在我想用指標1,10,100,1000,10000 100000元,從1百萬計數我不能在這裏使用islice
,因爲每撥號next
都會將當前值轉移到右側。例如
next(islice(iteration, 1, 2)) + next(islice(iteration, 3, 4))
產生'26'而不是'24'。
更新(12年11月25日,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等
你當前的代碼有一個問題,它不會懶惰地生成數字(例如,將'10 ** 6'改爲'10 ** 7') - '''.join'將消耗它的通過。 – DSM