如何解决有没有办法从一个整数列表中获取一个新的整数列表,这些整数加起来等于某个值?
我有一个整数列表,它们是随机排序的,并且可能重复:CREATE or REPLACE FUNCTION public.tf_test()
RETURNS trigger
NOT LEAKPROOF AS
$BODY$
DECLARE
targetid orderpayment.id%TYPE;
BEGIN
INSERT INTO
orderpayment(currencycode,tableorderid,payment,tip,paymentprocessor)
VALUES
(NEW.currency,NEW.orderid,NEW.amount,NEW.tip,1)
RETURNING id INTO targetid;
NEW.orderpayment = targetid;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;
和某个值(例如:mylist = [5,4,2,5,6,7,3,8,3]
)
现在,我想从value=35
中获取一个整数列表,我们将其命名为mylist
,其中包括所有可能的数字选项,这些数字加起来为sumlist
。
这样我就可以这样做:
value
sum=0
for i in sumlist[0]:
sum+=i
将返回sum == value
。
解决方法
Itertools.combinations非常容易管理。当您为其提供列表和长度时,它将提供该长度的所有可能组合,并且与排列不同,它将删除重复项。为了确保尝试每个选项,必须尝试每个长度(从0到完整字符串),如下所示:
import itertools
def SumList(MyList,Value):
for Length in range(1,len(MyList)):
for ListOfVals in itertools.combinations(MyList,Length):
Total=0
for num in ListOfVals:
Total+=num
if Total==Value:
return(ListOfVals)
mylist=[5,4,2,5,6,7,3,8,3]
value=35
print(SumList(mylist,value))
>>[5,8]
作为一个简短的注解,它总是输出最短的组合,因为它会迭代从最短到最长的长度。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。