0

我使用任意维度的多维结构。我有一个 Python 迭代器列表xrange,每个迭代器代表一个多维数组的索引:

indices = [ i, j, k ]

在哪里

i = xrange(1,3)
j = xrange(3,5)
k = xrange(5,7)

为了生成所有可能的值,我使用以下简单的递归代码:

def travtree(index,depth):
    "Recursion through index list"
    if depth >= len(indices):
        # Stopping Condition
        print index
    else:
        # Recursion
        currindexrange = indices[depth]
        for currindex in xrange(len(currindexrange)):
            newindex = list(index) # list copy
            newindex.append(currindexrange[currindex])
            travtree(newindex,depth+1)

travtree([],0)

这很好用,但我想知道,有没有更有效的 Pythonic 方式来做到这一点?我尝试查看itertools模块,但没有任何反应。

4

1 回答 1

4
>>> from itertools import product
>>> i = xrange(1,3)
>>> j = xrange(3,5)
>>> k = xrange(5,7)
>>> indices = [ i, j, k ]
>>> for item in product(*indices):
        print item


(1, 3, 5)
(1, 3, 6)
(1, 4, 5)
(1, 4, 6)
(2, 3, 5)
(2, 3, 6)
(2, 4, 5)
(2, 4, 6)
于 2012-04-17T16:36:13.240 回答