我有两个包含质心坐标元组的列表...
current_centroids = [(924, 849), (734, 974), (360, 778), (400, 710), (963, 1067), (839, 440), (899, 88)]
prior_centroids = [(1096, 837), (522, 763), (898, 960), (563, 694), (1790, 720), (1080, 75), (1780, 713)]
我想通过将
current_centroids
中每个元组的第二个元素与prior_centroids
中每个元组的第二个元素进行比较来生成配对元组,并找到第二个元素之间绝对差最小的结果对。
例如,对于
(924, 849)
中的current_centroids
,在比较第二个元素时,来自prior_centroids
的绝对差值最小(=12)的元组是(1096, 837)
。我一直在尝试使用列表理解来解决这个问题,以便我可以生成格式为 [((924, 849), (1096, 837)), .....]
的最终列表。我没有使用 zip
,因为每个列表中的元素不会对应,并且它们可以具有不同数量的元素,即使在我的示例中它们的大小相同。
循环
current_centroids
。对于每个元素,使用 min()
查找 prior_centroids
中 [1]
值之间绝对差最小的元素。
result = []
for c1 in current_centroids:
c2 = min(prior_centroids, key=lambda c: abs(c1[1] - c[1]))
result.append((c1, c2))
示例输入的结果:
[((924, 849), (1096, 837)),
((734, 974), (898, 960)),
((360, 778), (522, 763)),
((400, 710), (1780, 713)),
((963, 1067), (898, 960)),
((839, 440), (563, 694)),
((899, 88), (1080, 75))]