私はループのためにitertools.product
があることを知っていますが、それをもたらす反復数が与えられればn空間に任意の座標を返すようなものを書きたいと思っていましたループで。私はすでに似たようなものを書いています。特定の反復数をn次元のリスト/配列にマッピングする
def clock(iteration_number, axis_lengths):
dimension=len(axis_lengths)
coordinate = []
for i in range(dimension):
s = axis_lengths[dimension-i-1:dimension-i][0]
g = iteration_number % s
iteration_number /= s
coordinate += [g]
return tuple(reversed(coordinate))
が、私は組み込み関数divmod
のヘルプ(または別)で、それはリストの内包に圧縮することができる、ということ願っています。私はlambda
の機能とmap
を使用しようとしていましたが、役に立たないので、私は立ち往生しています。例えば、上記の関数を反復数98000
の軸番号[6, 14, 9, 13, 17]
(つまり5次元配列)の配列A
で実行すると、座標は(3, 7, 2, 5, 12)
となります。これを行うにはどうすればよいですか?特定の反復番号をn次元配列のその位置にマップしますか?そして、私の目標は、上記のような別の関数を書くことではありません。
私はあなたの現在のソリューションであなたが不幸になり、正しくか理解I'amわかりませんか?それはスピードですか?それはコードの長さですか(できるだけ多くの組み込み関数を使用する方がいいですか?)あなたはそれを反復するために巨大なタプルを作成して格納しているのですか?1で1を値下げし、それらを忘れるイテレータを好むでしょうか? – Julien
@JulienBernuそれほどスピードはあまりありませんが、この問題のために1ライナーが必要だと思っていますが、私はそれについて考えることはできません。 – bjd2385