简体   繁体   中英

Seeking generalized way to solve equation using all possible combinations of values of two lists in python

i want to see which combinations of the product of each of these lists solves an equation, "j=k-l+m"

stake=[0,2,5,10]
odds=[1,2,5,10]

The only way i can think of so far is as follows. I create a list of tuples using product function like so

from itertools import product

stake_odds=(list(product(stake,odds)))
print(stake_odds)
>>>[(0, 1), (0, 2), (0, 5), (0, 10), (2, 1), (2, 2), (2, 5), (2, 10), (5, 1), (5, 2), (5, 5), (5, 10), (10, 1), (10, 2), (10, 5), (10, 10)]

i then create a further list of the combinations of tuples of length the number of variables in my equation:

stake_odds2=(list(product(stake_odds, repeat=3)))

then I do the following

pos_combos=[]
for i in stake_odds2:
    x,y,z=i
    a,b=x
    c,d=y
    e,f=z
    k=a*b
    l=c*d
    m=e*f
    j=k-l+m
    if j > 0:
        pos_combos.append(i)

printing pos_combos returns what i want. My issue is however is that if i want to expand the equation or the two lists then it obviously becomes a nightmare to unpack the tuples and label everything, even the above is giving me a headache looking at it.

Is there any slicker way of doing this? maybe any simulation packages i should be aware of?

Thanks in advance

There's no need to unpack all of those variables, just take the product of the tuples then do the final math.

from itertools import product
import numpy as np
stake=[0,2,5,10]
odds=[1,2,5,10]
stake_odds=(list(product(stake,odds)))
stake_odds2=(list(product(stake_odds, repeat=3)))

for i in stake_odds2:
    t = [np.prod(x) for x in i]
    if t[0]-t[1]+t[2]>0:
        pos_combos.append(i)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM