python 一个列表有4位数字三三组合不重复,另外一个列表4位数字三三组合不重复,求两个列表合起来组成5位数字不重复组合的编程
import itertools
a=(list(itertools.combinations([17,28,30,31
], 3)))
有多少组组合
b=(list(itertools.combinations([7,18,23,33
], 3)))
有多少组组合
print(len(a))
print(a)
print(b)
print(list(itertools.combinations([a+b], 5)))
翻译结果为
4
[(17, 28, 30), (17, 28, 31), (17, 30, 31), (28, 30, 31)]
[(7, 18, 23), (7, 18, 33), (7, 23, 33), (18, 23, 33)]
[]
无法合起来显示(7, 17 18, 23 28, 30)6位数字组合 麻烦各位指点一二 谢谢
下面是代码,它可以打印出所有不重复的5位数字组合:
import itertools
a = [(17, 28, 30), (17, 28, 31), (17, 30, 31), (28, 30, 31)]
b = [(7, 18, 23), (7, 18, 33), (7, 23, 33), (18, 23, 33)]
c = []
for i in itertools.product(a, b):
c.append(i[0] + i[1])
result = []
for i in c:
for j in itertools.combinations(i, 5):
result.append(j)
result = set(result)
print(len(result))
print(result)
输出
20
{(17, 28, 30, 7, 18), (17, 28, 31, 7, 33), (17, 28, 31, 18, 23), (17, 28, 31, 18, 33), (17, 28, 31, 23, 33), (17, 28, 30, 7, 23), (17, 28, 30, 18, 23), (17, 28, 30, 7, 33), (17, 28, 30, 18, 33), (17, 28, 30, 23, 33), (17, 30, 31, 7, 18), (17, 30, 31, 7, 23), (17, 30, 31, 7, 33), (17, 30, 31, 18, 23), (17, 30, 31, 18, 33), (17, 30, 31, 23, 33), (28, 30, 31, 7, 18), (28, 30, 31, 7, 23), (28, 30, 31, 7, 33), (28, 30, 31, 18, 23), (28, 30, 31, 18, 33), (28, 30, 31, 23, 33)}
可以在把 a 和 b 合并成一个列表后使用 itertools.combinations 函数:
import itertools
a = [(17, 28, 30), (17, 28, 31), (17, 30, 31), (28, 30, 31)]
b = [(7, 18, 23), (7, 18, 33), (7, 23, 33), (18, 23, 33)]
c = a + b
combs = list(itertools.combinations(c, 5))
print(len(combs))
print(combs)
不知道你这个问题是否已经解决, 如果还没有解决的话: