为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法从一个整数列表中获取一个新的整数列表,这些列表加起来等于某个值?

有没有办法从一个整数列表中获取一个新的整数列表,这些列表加起来等于某个值?

汪汪一只猫 2023-06-06 17:33:26
我有一个整数列表,它们是随机排序的并且可能重复:mylist = [5,4,2,4,5,6,7,3,8,3] 和某个值(例如value=35:)现在我想从 中获取一个整数列表mylist,我们将其命名为sumlist,其中包括加起来为 的所有可能的数字选项value。所以当我会做的时候:sum=0for i in  sumlist[0]:   sum+=isum == value会回来的True。
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

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,4,5,6,7,3,8,3]

value=35

print(SumList(mylist,value))




>>[5,4,5,6,7,8]

就像一个快速的旁注,这将始终输出最短的组合,因为它会从最短到最长迭代长度。


查看完整回答
反对 回复 2023-06-06
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信