0
我使用任意维度的多维结构。我的xrange
迭代Python列表,与代表一个多维阵列的索引的每个迭代:多维索引(任意维数)的列表表示的高效迭代
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
模块中查找,但没有发现任何内容。
对于itertools为+1。有完全相同的方法,但发布太慢 – ch3ka 2012-04-17 16:41:37
优秀的答案! – Gilead 2012-04-17 16:49:47