我有一个整数列表,它们是随机排序的并且可能重复: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]
就像一个快速的旁注,这将始终输出最短的组合,因为它会从最短到最长迭代长度。
添加回答
举报
0/150
提交
取消