python之凑数,关于itertools的使用
凑数的意思是指在一列数据中找到求和等于某个数的所有组合,在凑数的过程中常用到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)]
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
