凑数的意思是指在一列数据中找到求和等于某个数的所有组合,在凑数的过程中常用到itertools.combinations(iterable, r)这个函数,这个函数的意思是返回由输入iterable中元素组成长度为r的子序列,可以理解为有序枚举,若元素的值有重复也依样会保留。例子如下:
import itertools
l=[1,2,3,4,5,6]
print(list(itertools.combinations(l,2)))
其得出的结果为:
[(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 3), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6), (4, 5), (4, 6), (5, 6)]
故在凑数的过程中我们可以用itertools.combinations(iterable,r)和for if 函数结合,得出等于某个数的所有组合,例子如下:
#哪些数组合求和结果为45
import itertools
l=[1,2,3,4,5,6,8,8,7,5]
res=[]
for r in range(len(l)):
bn=itertools.combinations(l,r+1)
for b in bn:
if sum(b)==50:
if b not in res:
res.append(b)
print(res)
结果为:
[(2, 4, 5, 6, 8, 8, 7, 5), (1, 2, 3, 5, 6, 8, 8, 7, 5)]
因篇幅问题不能全部显示,请点此查看更多更全内容