为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森栏 2021-10-19 09:58:07
我有两套清单。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)]如果有人告诉我如何实现这一目标,我会很高兴。
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

您可以使用出租车几何:


def manhattan(as_, b):

    threshold = 4

    for a in as_:

        p1, p2 = a

        q1, q2 = b

        dist = abs(p1 - q1) + abs(p2 - q2)

        if dist <= threshold:

            return b

        else:

            continue


t = list(filter(lambda i: manhattan(listA, i), listB))


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

或者


from operator import truth


t = list(filter(truth, (manhattan(listA, i) for i in listB)))


查看完整回答
反对 回复 2021-10-19
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

这是我认为你正在寻找的


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  x[1]-2<=a[1]<=x[1]+2   for a in A)]


print(result)

输出 :


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


查看完整回答
反对 回复 2021-10-19
  • 2 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信