gpt4 book ai didi

python - 二维列表的多重比较

转载 作者:行者123 更新时间:2023-11-28 16:29:36 25 4
gpt4 key购买 nike

我有以下形式的二维列表:

xyPositions = [[474, 318], [543, 432], [633, 328], [548, 514]]

有时这些列表中有 4(如此处)、8、10、12 或 16 对 xy 坐标。

我编写的以下小函数将测试两组 x y 坐标是否重叠,例如,dotOverlap( [55, 99], [399, 88] )

但是,我有点不好意思地说我想不出一种简单的方法来测试所有可能的重叠情况(即成对比较):

#    #
1 to 2
1 to 3
1 to 4
2 to 3
2 to 4
3 to 4

我如何以编程方式执行此操作?


from math import sqrt
ClearanceRadius = 7 # pixels
def dotOverlap(p1, p2):

x1 = p1[0]
y1 = p1[1]
x2 = p2[0]
y2 = p2[1]

overLapTest = None

d = sqrt( (y2 - y1)**2 + (x2 - x1)**2 )

if ClearanceRadius*2 < d:
overLapTest = False
elif ClearanceRadius*2 > d:
overLapTest = True

return(overLapTest)

最佳答案

您可以使用 itertools.combinations生成所有组合,你可以像这样在你的函数中一个一个地解压组合

>>> from itertools import combinations
>>> xyPositions = [[474, 318], [543, 432], [633, 328], [548, 514]]
>>> [dotOverlap(*items) for items in combinations(xyPositions, r=2)]
[False, False, False, False, False, False]

关于python - 二维列表的多重比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33339523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com