在执行了一些算法之后,我最终得到了一个类似于下面的列表:
l = Set([(integer_4_digits, integer_n_digits], ..)
ex: l = Set([(1011, 123556), (1041, 424553), (1241, 464096), (1027, 589325), (1011, 432341), (1031, 423076)])
l = list(l) #all tuples must exist once. need to get items by index to match (perhaps?)
此列表中的每个元组的第一项是 4 位整数(正数),第二项是另一个正整数。
我想要的是:
创建一个新列表(列表或元组),其中所有可能的组合通过交叉匹配分组在一起(在列表或元组中),包括第五个(或第三个,如果它是元组+元组+布尔)元素True
或False
取决于两个新匹配的交叉元组的前 4 位整数是否相同(例如:1011 == 1011
所以 Bool= True
)。
所以在这个过程之后,我想得到类似的东西:
new_list = [(l[0], l[1], False), (l[0], l[2], False), (l[0], l[3], False), (l[0], l[4], True) ..
(l[1], l[2], False), (l[1], l[3], False), (l[1], l[4], False), ..
(l[2], l[3], False), (l[2], l[4], False), (l[2], l[5], False), ..]
如您所见,new_list
不包含重复匹配项。(l[0]
只匹配l[1]
一次,无论匹配元组是 a to be 还是 b to a ( l[0],l[1],..
) 或 ( l[1],l[0],..
)
现在我可以使用嵌套for e in l
循环和弹出最后一个e
元素并执行e[0]
布尔检查并创建一个新的元组(或列表)并添加到new_list
列表中来实现这一点。
那么我该怎么做呢?我该怎么做?