python 数据筛选

import itertools
a=(list(itertools.combinations([3,4,5,9,17,28,30,31
], 6)))
print(len(a))
print(a)

结果为
28
[(3, 4, 5, 9, 17, 28), (3, 4, 5, 9, 17, 30), (3, 4, 5, 9, 17, 31), (3, 4, 5, 9, 28, 30), (3, 4, 5, 9, 28, 31), (3, 4, 5, 9, 30, 31), (3, 4, 5, 17, 28, 30), (3, 4, 5, 17, 28, 31), (3, 4, 5, 17, 30, 31), (3, 4, 5, 28, 30, 31), (3, 4, 9, 17, 28, 30), (3, 4, 9, 17, 28, 31), (3, 4, 9, 17, 30, 31), (3, 4, 9, 28, 30, 31), (3, 4, 17, 28, 30, 31), (3, 5, 9, 17, 28, 30), (3, 5, 9, 17, 28, 31), (3, 5, 9, 17, 30, 31), (3, 5, 9, 28, 30, 31), (3, 5, 17, 28, 30, 31), (3, 9, 17, 28, 30, 31), (4, 5, 9, 17, 28, 30), (4, 5, 9, 17, 28, 31), (4, 5, 9, 17, 30, 31), (4, 5, 9, 28, 30, 31), (4, 5, 17, 28, 30, 31), (4, 9, 17, 28, 30, 31), (5, 9, 17, 28, 30, 31)]
上面的编程有28组,其中有10组同时包含3,4,5这三个数据,怎么样新建一个列表后取消这10组数据剩下18组数据。另外这组数据(3, 5, 9, 17, 30, 31) 中6个号码的和值为 3+5+9+17+30+31=95,再筛选 出 和值大于等于95的其他数据


import itertools
a=(list(itertools.combinations([3,4,5,9,17,28,30,31], 6)))
print(len(a))
print(a)

## 提出同时含有 3,4,5 的数据(项目两种方式都可以)
result_1 = []
for item in a:
    if 3 not in item:
        result_1.append(item)
    else:
        if 4 not in item:
            result_1.append(item)
        else:
            if 5 not in item:
                result_1.append(item)

result_2 = []
for item in a:
    if not list(item[:3]) == [3,4,5]:
        result_2.append(item)

print(result_1)
print(result_2)

print(len(result_1),len(result_2))

# 筛选和大于95的数据
data = [ i for i in result_1 if sum(i)>95 ]
print(data)


1.它是按顺序的,3,4,5都在最前面,你直接切片切掉前10个就行了
2.[x for x in a if sum(x)>95]