如何查找列表实例是否在另一个列表中可用?

我有两套清单。


list A= [(1,6),(3,10),(4,1),(0,5)]

list B = [(0,3),(0,4),(30,1),(4,10)]

现在对于 B 中的每个项目,我必须检查它是否在列表 A 中可用,阈值为 -2 到 +2。


所以 B 中的第一个值是 (0,3),因为在每个点中使用阈值,我发现(from -2 to 2, from 1 to 5)在这个范围内,列表 A 中是否有一个列表项可用。我们可以看到最后一个项目值(0,5)满足这个条件。所以我可以说该项目(0,3)在列表 A 中。现在我必须将此值放在一个新列表中。


根据流程,我的新列表将是:


[(0,3),(0,4),(4,10)]

如果有人告诉我如何实现这一目标,我会很高兴。


森栏
浏览 125回答 2
2回答

MMMHUHU

您可以使用出租车几何:def manhattan(as_, b):&nbsp; &nbsp; threshold = 4&nbsp; &nbsp; for a in as_:&nbsp; &nbsp; &nbsp; &nbsp; p1, p2 = a&nbsp; &nbsp; &nbsp; &nbsp; q1, q2 = b&nbsp; &nbsp; &nbsp; &nbsp; dist = abs(p1 - q1) + abs(p2 - q2)&nbsp; &nbsp; &nbsp; &nbsp; if dist <= threshold:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return b&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continuet = list(filter(lambda i: manhattan(listA, i), listB))[(0, 3), (0, 4), (4, 10)]或者from operator import trutht = list(filter(truth, (manhattan(listA, i) for i in listB)))

缥缈止盈

这是我认为你正在寻找的A= [(1,6),(3,10),(4,1),(0,5)]B = [(0,3),(0,4),(30,1),(4,10)]result=[x for x in B if any(x[0]-2<=a[0]<=x[0]+2 and&nbsp; x[1]-2<=a[1]<=x[1]+2&nbsp; &nbsp;for a in A)]print(result)输出 :[(0, 3), (0, 4), (4, 10)]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python