1
基本的には、組み合わせが生成される順序を変更できるitertools.product
の実装を探しています。可能なすべての組み合わせを動的な順序で試してみよう
例:
:[('A', 'x'), ('A', 'y'), ('B', 'x'), ('B', 'y')]
私はこのような、たとえば、「次のBに変更してください」のような要求に応答する実装が必要:私はitertools.product('AB', 'xy')
を使用している場合、それは、この正確な順序で組み合わせを生成し、
>>> generator = DynamicOrderProduct({'var1': 'AB', 'var2': 'xy'})
>>> generator.first()
{'var1': 'A', 'var2': 'x'}
>>> generator.change('var1')
{'var1': 'B', 'var2': 'x'}
>>> generator.change('var2')
{'var1': 'B', 'var2':, 'y'}
>>> generator.change('var2') # here it can't generate a new combination by
# changing var2, so it changes var1 instead
{'var1': 'A', 'var2': 'y'}
>>> generator.change('var2')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
理想的には、発電機は、このような変数のリストを受け入れるだろう
generator.change(['var1', 'var2'])
次に、var1
の値を変更しようとする必要があります。それが可能でない場合は、var2
の値を変更するなどの方法があります。
これを実装するにはどうすればよいですか?私を助けることができる標準的なライブラリには何かありますか?