Приведенный ниже код отлично подходит для генерации всех способов комбинирования чисел, суммирующих определенное значение с шагом 2.
Увеличение to_val
и axislengh
требует значительных потерь. по исполнению.
Есть ли способ повысить эффективность нижеперечисленных? Если да, то не могли бы вы привести пример?
import itertools
import pandas as pd
def yielder(ctproduct):
for element in ctproduct:
#Making sure the sum of the numbers is between from_val and to_val.
if to_val>sum(element)>=from_val:
yield element
axislengh= 4
from_val= 100
to_val= 104
step=2
#Maybe this is not the best way.
args =[[i for i in range(0, to_val, step)] for x in range(axislengh)]
ctproduct= itertools.product(*args)
df=pd.DataFrame(yielder(ctproduct))
df