准确检查元组是否包含某些值

时间:2014-12-27 12:49:22

标签: python tuples

我有一个家庭作业,我必须显示组合(范围(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)

4 个答案:

答案 0 :(得分:4)

你可以使用套装:

if not {10, 20, 30} <= set(comb):
    print(comb)

检查集合{10, 20, 30}是否为comb的子集,这与检查每个数字1020和{{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