R=[(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 3), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6), (4, 5), (4, 6), (5, 6)]
对于上面的集合,我需要获取索引,其中第一个值应与集合的第一个值仅匹配,第二个值应仅与第二个值匹配这意味着当我将 a[0] 与 R[tuples] 匹配时,a 和 R 中的任何元素都不应该彼此相等
,只能 1 到 1 或 2 到 2在简单中,第一个应该只与结果集中的第一个元素匹配,第二个应该只与结果集中的第二个元素匹配。 并且它不能匹配结果集的任何其他元素
预期答案:
a=(2,5) ANS INDEX: (5,7)
b=(3,6) ANS INDEX: (9,13)
这是我的代码太详细,太长,并且需要很长时间才能为我的实际项目运行。所以我在上面给出了一个示例,请帮助我以乐观的方式驾驶它..,以实现速度。
for j in range(i+1,i+10):
b=set(Results[j])
if (len(a&b)==0):
for k in range(i+10, i+200):
c=set(Results[k])
if ( (len(a&c)==0) and (len(b&c)==0) ):
for l in range(i+200, i+600):
d=set(Results[l])
if ( (len(a&d)==0) and (len(b&d)==0) and (len(c&d)==0) ):
for m in range(i+500, i+1000):
e=set(Results[m])
if ( (len(a&e)==0) and (len(b&e)==0) and (len(c&e)==0) and (len(d&e)==0) ):
for n in range(i+1000, i+2000):
f=set(Results[n])
if ( (len(a&f)==0) and (len(b&f)==0) and (len(c&f)==0) and (len(d&f)==0) and (len(e&f)==0) ):
for o in range(i+2000, i+3000):
g=set(Results[o])
if ( (len(a&g)==0) and (len(b&g)==0) and (len(c&g)==0) and (len(d&g)==0) and (len(e&g)==0) and (len(f&g)==0) ):
for p in range(i+3000, XRUN):
h=set(Results[p])
if ( (len(a&h)==0) and (len(b&h)==0) and (len(c&h)==0) and (len(d&h)==0) and (len(e&h)==0) and (len(f&h)==0) and (len(g&h)==0)):
CN=CN+1
提前谢谢。
问题:查找 R[0] 和 R[1],答案是 0:4,5,6,7 表示 1:2,5,6,7
R[0] 的答案: (3, 4, 5, 6, 7( => R[3] 有 1
R[1] 的答案: (4, 6, 7, 8, 9( => R[2] 和 R[5] 不匹配,R[4] 有 2;R[8] 有 19 个;R[9] 有 21
数据:
# 0 1 2 3 4 R = [(1,10,14,34), (2,5,19,21), (3,7,31,32), (1,9,12,31), (2,10,11,22), (4,8,14,32), (13,15,19,34), (1,5,15,20), (3,26,19,25), (4,17,18,21)] # 5 6 7 8 9
result = []
for i, T in enumerate(R):
r = []
for Ii, Tt in enumerate(R[i + 1:], i + 1):
if set(Tt).intersection(set(T)):
r.append(Ii)
if len(r):
result.append(tuple(r))
else:
result.append(None)
print('result:{}'.format(result))
输出:
# 0 1 2 3 4 result:[(3, 4, 5, 6, 7), (4, 6, 7, 8, 9), (3, 5, 8), (7,), None, (9,), (7, 8), None, None, None] # 5 6 7 8 9
用 Python 测试:3.4.2