如何从迭代器中的不同索引位置获取多个任意值?
How to get the n next values of a generator in a list (python) and Get the nth item of a generator in Python描述了itertools.islice
用于从迭代器中获取任意元素或连续子集的用途。但是,如果我想要迭代器中不同位置的多个任意元素,你不能只使用islice
'step 参数怎么办?
我正在尝试解决 Project Euler 的问题 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))
产生“26”而不是“24”。
更新 (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 等组成的序列。