【发布时间】:2014-03-17 02:24:12
【问题描述】:
假设,您有一个如下列表:
A = [
[(1, 9), (2, 10), (3, 11), (4, 12), (5, 13), (6, 14), (7, 15), (8, 16)],
[(1, 19), (2, 110), (13, 1), (41, 112), (51, 131), (16, 141), (17, 15), (18, 16)],
[(1, 299), (2, 1310), (13, 111), (41, 112), (51, 131), (16, 141), (17, 15), (18, 16)]
]
我正在寻找的是在列表中现有元组的一列上找到交集的最快方法。例如,如果我需要在 x0 上找到每个子列表包含 (x0, x1) 的列交集,那么输出应该是:
out = [(1,9), (1,19), (2, 10), (2, 110), (1, 299), (2, 1310)]
这基本上是一组具有相似第一列值的所有元素。
我用来找到一个简单的交集来匹配整个元组的方法基本上是(它从所有子列表中给出完全匹配):
out = set.intersection(*map(set, A))
任何帮助都会很棒。谢谢。
【问题讨论】:
-
你究竟是如何得到这个结果的?您是说要查找有数字
x的情况,以便每个列表包含(x, y)形式的元组? -
是的。就像,每个子列表都包含 (x, y) 形式的元组,所以我需要找到(假设)x 相同的所有元组。