from itertools import combinations
p = [1, 2, 3, 4, 5] # 产品代码
list_c = [(1, 2), (1, 3)] # 判断条件
list_3 = []
list_4 = []
b = 1
for b in range(1, max(p)):
for c in combinations(p, b + 1):
c_txt = str(c)
print(c_txt)
if c in list_c:
list_3.append(c) # 有效组合
else:
list_4.append(c) # 排除的组合
print(list_4)
print(list_3)
list_3结果:[(1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5), (1, 2, 3), (1, 2, 4)...................]
我希望的效果是 只要带有 list_c 的都排除,就是(1, 2, 3), (1, 2, 4)这些也排除掉,并且生成所有排列的组合2-5位。
(1,2)和(2,1)视为重复。
我想可能是因为 (1, 2, 3) 倍看做为一个元素所有不能排除,但是我想不到用什么方法。
希望有好心人帮帮忙,谢谢!