0
私は任意の次元の多次元構造を扱います。私は、次のナイーブ再帰コードを使用(任意の次元の)多次元インデックスのリスト表現上の効率的な反復
i = xrange(1,3)
j = xrange(3,5)
k = xrange(5,7)
すべての可能な値を生成するために、
indices = [ i, j, k ]
:私は、多次元配列のインデックスを表す各イテレータと、xrange
イテレータのPythonのリストを持っています。
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)
これは問題なく動作しますが、これを行うにはより効率的なPythonの方法がありますか?私はitertools
モジュールを調べてみましたが、私には何も飛びません。
1 for itertools。まったく同じアプローチだったが、遅すぎる投稿 – ch3ka
優れた答え! – Gilead