Skip to main content
 首页 » 编程设计

python之Itertools.product 中索引处的元素

2025年05月04日12daizhj

我们可以从 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