如何编写一个函数,以找到列表中添加到目标的任何元素的所有元素

您所在的位置:网站首页 combinations函数 如何编写一个函数,以找到列表中添加到目标的任何元素的所有元素

如何编写一个函数,以找到列表中添加到目标的任何元素的所有元素

2023-04-08 12:32| 来源: 网络整理| 查看: 265

我被雇用来调和多年的财务记录,这些财务记录具有很大的差异。这些语句在Excel中列出,包括交易的名称和数字(credit/debit的正或负数)。我被要求手动阅读所有陈述,以查找将增加差异的任何值组合,但是有成千上万的行,我认为一个计划可以立即在每个财政年度运作,这将更合适。

例如,如果我有一个列表[1,3,6,7,10],而我的目标是14,我希望像[(1,6,7),(1,3,10)这样的输出。 。

我已经看到许多问题问他们在哪里试图找到一些解决方案,但是我希望将其扩展以找到n个解决方案。

我尝试使用Excel的求解器工具,但仅限于200个变量。我尝试编写一个迭代列表的函数,但我只对Python有基本的理解,这感觉超出了我的影响力。如果有人对这个过程有任何想法,我可以接受,我真的很感激。

分析解答

您可以使用递归尝试列表的所有子序列。

def findSums(l, target): res = [] def go(curr, i, s): if s == target: res.append(tuple(curr)) elif s < target and i < len(l): go(curr + [l[i]], i + 1, s + l[i]) go(curr, i + 1, s) go([], 0, 0) return res

另外,您可以使用itertools.combinations。

def findSums(l, target): from itertools import combinations return [tuple(x) for i in range(1, len(l) + 1) for x in combinations(l, i) if sum(x) == target]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3