【发布时间】:2012-10-06 19:29:25
【问题描述】:
在执行了一些算法之后,我最终得到了一个类似于下面的列表:
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 位整数(正),第二项是另一个正整数。
我想要的是:
创建一个新列表(列表或元组),其中所有可能的组合通过交叉匹配组合在一起(在列表或元组中),包括第五个(或第三个,如果它是 tuple+tuple+bool)元素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 列表中来实现这一点。
那么我该怎么做呢?我该怎么做?
【问题讨论】:
标签: python python-2.7