我有一个(最多40个)组件的数组['c1','c2','c3','c4','c5',...]
,并且:
我有一个函数,可以通过查询数据库表verify_combination(component1,component2)
。如果是禁止的组合,它将返回False
。如果我假设组合(c1,c3)和(c4,c5)是被禁止的,那么最后我会得到这样的结果:
combinations = [(c1,c2),(c1,c4),(c1,c5),(c2,c3),(c2,c4),(c2,c5),(c3,c4),(c3,c5), (c1,c2,c4),(c1,c2,c5),(c2,c3,c4),(c2,c3,c5)]
# (I believe that's right)
# (In this case no valid combinations of r=4 would be produced)
总体而言,我对python和编程不是很有经验,而且我严重缺乏用标准或条件对这种组合建模的数学技能。在过去的几个小时里,我一直在尝试这样做,试图找到已经在web上编写的类似这样的代码,还尝试使用itertools,但甚至不接近解决方案
如果我理解正确,我可能会从itertools.combines开始,它将返回输入列表成员的iterable。然后你可以过滤掉非法的组合
相关问题 更多 >
编程相关推荐