我们可以从 Python 3 中的 itertools.product 结果中获取特定索引中的元素吗?像下面这样:
xlist = itertools.product('abc', repeat=3)
element = xlist[10]
更新
整个问题天翻地覆!我发现生成所有集合并查找索引是一个大错误!我查看了可能的 duplicate我的问题,但我没有得到 answer !
请您参考如下方法:
在到达索引之前您不必迭代生成器,但您可以立即生成该产品,如 here 所述,在 O(1) 中.将其调整为 (lst, repeat) 形式:
def nth_product(lst, repeat, n):
k = len(lst)
return [lst[n // (k**r) % k] for r in range(repeat-1, -1, -1)]
例子:
>>> lst = list(range(10))
>>> ref = list(itertools.product(lst, repeat=3))
>>> all(nth_product(lst, 3, i) == list(r) for i, r in enumerate(ref))
True
