如何找到列表中所有产品的不同组合的总和(python)

如何找到列表中所有产品的不同组合的总和(python),python,methods,permutation,product,Python,Methods,Permutation,Product,我有以下两个python数字列表: list1 = [0, 2, 5, 10, 20, 50, 100] list2 = [2, 4, 6, 8, 10, 20] 我可以得到如下每种产品: combo = list(product(list1, list2)) 然后我有一个类,我在其中创建了一个方法,它只是两个列表中给定元素的乘积(取决于其他类变量)的加减,例如 class1 = class.method(x, y) class1 = class.method(list1[1], list2

我有以下两个python数字列表:

list1 = [0, 2, 5, 10, 20, 50, 100]
list2 = [2, 4, 6, 8, 10, 20]
我可以得到如下每种产品:

combo = list(product(list1, list2))
然后我有一个类,我在其中创建了一个方法,它只是两个列表中给定元素的乘积(取决于其他类变量)的加减,例如

class1 = class.method(x, y)
class1 = class.method(list1[1], list2[5])
class1 = class.method(2, 20)
class1 = 40
我想得到所有可能的产品组合的类的所有实例的总和。这些可以重复(即(2,20)可以多次使用,等等),因此组合的数量将非常大

我的问题是,当我的实例数量增长到非常大的数量时,我不确定如何循环遍历整个组合列表。到目前为止,我能想到的唯一一件事是如下所示,结果只是空白

pos_combos = []
for i in combos:
   x, y = i
   if class1.method(x, y)
      +class2.method(x, y)
      +class3.method(x, y)
   …
      +class98.method(x, y)
      +class99.method(x, y)
      +class100.method(x, y) > 0:
         pos_combos.append(i)
print(pos_cases)
我可以得到不同的组合,我想用做下面

combo2 = list(product(combo, repeat=100))
但这太长了,甚至无法打印,更不用说将其中的每一个元素传递给等式的问题了

有人对如何做到这一点有什么想法吗?我认为对于simple for loop/function来说,任务可能太大了,可以使用一些更复杂的方法(即某种形式的ML)。 也许我可以把这两个列表分开,然后以某种方式循环每一个列表

如果有人能给我指出正确的方向,我将不胜感激

谢谢


编辑:最小可复制示例如下: 如果第二个实例都是负积,假设元组可以重复,那么一个例子是bet1使用(2,20)和bet2-bet100使用(2,5)(所以99次) 然后,pos_组合列表中的一个条目将是元组的元组

[((2, 20), ... (2, 5))]
当它们的和等于40时,它们的和大于0。
我想获得符合此标准的所有其他人的列表。

如果您已经有了列表
组合,那么您应该能够执行以下操作:

import itertools

sum([i*j for i,j in list(itertools.combinations(combo, 2))])
(1 * 2) + (1 * 3) + (2 * 3)
如果
combo=[1,2,3]
,则上述代码执行以下操作:

import itertools

sum([i*j for i,j in list(itertools.combinations(combo, 2))])
(1 * 2) + (1 * 3) + (2 * 3)

这里有很多无效代码。请发布一个适当的MCVE。我的问题编辑中有一个最小可复制的示例。最小可复制的示例不是口头描述,而是一段完整的代码。