先放代码
from itertools import combinations
def main(lists,value):
d = lists
for i in range(len(d)):
for c in list(combinations(d, i+1)):
s=sum(c)
if s==value:
print(c)
if __name__ == "__main__":
lists = [39.06,58.45,134.62,26.44,11.37,12.76,9.76,35.89,7.92,38.52,32.76,39.6,42.68,15.39,8.23,64.63,6.71,44.91,15.02,12.2]
value = 348
main(lists,value)
这个还可以考虑到按是否去重的问题。
去重代码
d = list(set(lists))
不去重可以使条件更充分,容易找出满足条件的答案,但是会增加一部分重复结果。