[英]Seeking generalized way to solve equation using all possible combinations of values of two lists in python
我想看看这些列表中的每一个的乘积的哪些组合解决了一个方程,“j=k-l+m”
stake=[0,2,5,10]
odds=[1,2,5,10]
到目前为止,我能想到的唯一方法如下。 我使用产品 function 像这样创建一个元组列表
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)]
然后我创建一个长度为我的方程中变量数量的元组组合的进一步列表:
stake_odds2=(list(product(stake_odds, repeat=3)))
然后我执行以下操作
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)
打印pos_combos返回我想要的。 然而,我的问题是,如果我想扩展等式或两个列表,那么解包元组和 label 一切显然会成为一场噩梦,即使是上面的内容也让我头疼。
有没有更巧妙的方法来做到这一点? 也许我应该知道任何模拟包?
提前致谢
无需解包所有这些变量,只需获取元组的乘积,然后进行最终数学运算。
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.