私はPythonシミュレーションで実験を行っており、入力ケースのリストを作成する必要があります。Pythonでデフォルト値を持つ複数リストの反復
各ケースは、例えば、パラメータのリストのリストから取られたインスタンスである:
heights = [100,110,120]
alphas = [0.1,0.01,0.001]
C = [0.1,0.2,0.5,0.9]
B = [1,2]
及びリストのリストである:
params = [heights,alphas,C,B]
元の量が大きい(〜30x100 )ので、各リストを直接扱うのは効率的ではありません。
最終的には、各入力の場合は、例えば、各カテゴリから一つのパラメータのタプル/ namedtuple /辞書です:
instance = {'height':100, 'alpha':0.1,'C:0.1, 'B':1}
私はインスタンスのリストを作成するために、パラメータ空間を反復したいと思います - しかし、
の代わりにそれらのすべての直積を作り、各パラメータごとカテゴリの残りはデフォルト値に設定されている間、私は、すべてのオプションを反復処理したい(最初の):ここでキャッチはです。例えば:
params = [[1,2,3],[4,5][7,8]]
(無反復で)インスタンスの予想セットである:
[(1,4,7)、(2,4,7)、(3,4、 7)、(1,5,7-)(1,4,8)]
は、最初のインデックスのデフォルトであり、第2のインデックスとでのデフォルトであります第3のデフォルト。デカルト積を作る
はitertools
と非常に簡単である:
from itertools import product
params = [[1,2,3],[4,5],[7,8]]
list(product(*params))
[(1、4、7)、(1,4,8)、(1,5,7)、(1 (2,4,7)、(2,4,7)、(2,5,8)、(2,5,8)、(3,4,7)、(3,4,5)、 (3,5,7)、(3,5,7)、(3,5,8)]
この場合、不要なインスタンスは除外できますが、最初の場所で生成するのは不十分です。この繰り返しを構築するためのエレガントな方法はありますか?
は、それはまだ最初のすべてのインスタンスを作成し、フィルタではありません彼らは? – Dimgold
あなたが書いた最後のボックスを見て、それがあなたの希望する出力であると思っていました。 – Rosh