计算n个列表的所有可能组合的总和,并检查与特定值的比较
我想编写一个代码(在python 3中),它能够计算不同数量列表的所有可能组合的总和。总和的结果需要用指定的值进行检查。对于总和合计为指定值的所有组合,我想创建一个仅包含这些值的新列表。计算n个列表的所有可能组合的总和,并检查与特定值的比较
例如:
value = 5 a = [1, 2, 3, 4]
b = [2, 3, 4, 5]
1 + 2 = 3 - x
1 + 3 = 4 - x
1 + 4 = 5 - correct
1 + 5 = 6 - x
2 + 2 = 4 - x
2 + 3 = 5 - correct
...
的结果应该是,例如:
res = [[1, 4], [2, 3], [3, 2], [4, 1]]
我知道,一个简单的办法是嵌套的for循环使用。问题是,在编写代码的时候,我不知道会有多少列表,导致需要定义所有可能的情况。这是我不想做的事情。当我运行代码时,我知道有多少个列表。列表的长度将始终相同(26个元素)。
需要检查的列表以下列方式存储在列表中。例如:
list = [[1, 2, 3, 4], [2, 3, 4, 5]]
一组实际列出的,我想解决这个问题的一个例子是:
list = [[0, 2, 0, 0, 5, 0, 0, 8, 0, 0, 11, 0, 0, 14, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 0, 0, 5, 0, 0, 8, 0, 0, 11, 0, 0, 14, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
所有的零个值在总数其他改进的结果的选项不符合其他标准。
我希望有人能把我推向正确的方向。 在此先感谢!
回答:
随着名单l
的一些列表(没有名字的东西list
,有一个内置的名为list
功能)
l = [[1, 2, 3, 4], [2, 3, 4, 5]]
我们可以使用itertools.product
来获取列表之间项目的所有组合,然后map
的sum
功能到这些组合。然后检查会员是很容易的。
from itertools import product if value in map(sum, product(*l)):
print('Yes!')
else:
print('No :(')
如果你想保存多张支票的金额,我建议您将它们保存到一组
sum_set = set(map(sum, product(*l))) if value in sum_set:
...
在product(*l)
的*
需要的是拆包经营者。它将l
到product
的元素作为单个参数给出product([1,2,3,4], [2,3,4,5])
以上是 计算n个列表的所有可能组合的总和,并检查与特定值的比较 的全部内容, 来源链接: utcz.com/qa/264881.html