python - 二维列表的多重比较

标签 python list nested-lists

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

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/

相关文章:

java - 从内存分配的角度来看 ArrayList 与 LinkedList

python - 以点表示法返回 python 嵌套 dict/json 文档中所有变量名称的列表

R:将函数应用于不同长度的嵌套列表

python - SQLAlchemy 性能

python - 使用理解有条件地加入先前的列表条目

python - GCM 数据的重新网格化/重新映射

Python 插入与 Ruby 插入

python - 有效地计算小于给定值的列表条目

python - 比较 python 中的列表以检测是否相等

java - 如何在 Java 中获取嵌套列表结构中的嵌套项