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

我有一个整数列表,它们是随机排序的并且可能重复:mylist = [5,4,2,4,5,6,7,3,8,3] 和某个值(例如value=35:)


现在我想从 中获取一个整数列表mylist,我们将其命名为sumlist,其中包括加起来为 的所有可能的数字选项value。


所以当我会做的时候:


sum=0

for i in  sumlist[0]:

   sum+=i

sum == value会回来的True。


汪汪一只猫
浏览 94回答 1
1回答

大话西游666

Itertools.combinations很容易管理这个。当您为它提供一个列表和一个长度时,它会给出该长度的所有可能组合,并且与排列不同,它会删除重复项。为确保尝试每个选项,必须尝试每个长度(从 0 到完整字符串),如下所示:import itertoolsdef 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=35print(SumList(mylist,value))>>[5,4,5,6,7,8]就像一个快速的旁注,这将始终输出最短的组合,因为它会从最短到最长迭代长度。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python