我有一个家庭作业,我必须显示组合(范围(1,36),7)。我已经有一个小的python脚本正在打印以下内容:
(1,2,3,4,5,6,7)
(1,2,3,4,5,6,8)
(1,2,3,4,5,6,9)
...
问题是如何检查和隐藏同一行中数字10和20和30的那些行?
我有这样的事情:
from itertools import combinations
for comb in combinations(range(1,36), 7):
#if(comb[0] or comb[1] or comb[2] or comb[3] or comb[4] or comb[5] or comb[6] == 10 or 20 or 30):
print (comb)
答案 0 :(得分:4)
你可以使用套装:
if not {10, 20, 30} <= set(comb):
print(comb)
检查集合{10, 20, 30}
是否为comb
的子集,这与检查每个数字10
,20
和{{1}是否相同} 30
中存在。
答案 1 :(得分:1)
x = set([10,20,30])
for comb in combinations(range(1,36), 7):
if not x.issubset(set(comb)): # generates True if any value of x is not in comb i.e, if all are not present in comb
print (comb)
答案 2 :(得分:-1)
In[9]: a = (1, 2, 3, 4, 5, 6, 7, 10, 20, 30)
In[10]: set((10,20,30)) & set(a)
Out[10]: {10, 20, 30}
答案 3 :(得分:-1)
试试这个:
from itertools import combinations
excluded = set([10, 20, 30])
for comb in combinations(range(1,36), 7):
if not excluded.issubset(set(comb)):
print comb