大话西游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]就像一个快速的旁注,这将始终输出最短的组合,因为它会从最短到最长迭代长度。