如何从四个不同的列表od坐标中找到近似坐标

时间:2018-06-14 09:30:30

标签: python python-3.x list

我有四个列表代表列表A和B中不同点的X和Y坐标,因此X_A,Y_A,X_B,Y_B

A ] ['a', 'b', 'c', 'd', 'e', 'f']
X_A = [1.0, 2.2, 3.0, 4.0, 5.001, 6.0]
Y_A = [0.0, 2.0, 4.0, 6.1, 8.0, 0.0]
B = ['k', 'l', 'm', 'n', 'o', 'p']
X_B = [1.0, 3.0, 5.0005, 7.0, 9.1, 11.0]
Y_B = [0.0, 1.0, 8.0, 2.0, 8.0, 0.1]

以上内容为' a'坐标(1.0,0.0)和' l'坐标(3.0,1.0)

我想在A到Node_A列表中添加项目,从B到Node_B添加项目,列表A和B的元素的相应坐标满足误差范围:

(X_A - X_B) <= error and (Y_A - Y_B) <= error

我有以下代码,我相信应该做的工作,但它似乎不起作用,我不明白为什么,任何帮助表示赞赏!

Node_A, Node_B = [], []

error = 1e-2

i, j = 0, 0
for lo1,la1 in zip(X_A, Y_A):
    for lo2,la2 in zip(X_B, Y_B):
        if abs(lo1 - lo2) <= error and abs(la1 == la2) <= error:
            Node_A.append(A[i])
            Node_B.append(B[j])
            break
        j += 1
    i += 1
    j = 0

所需的输出应如下所示&#39; a&#39;坐标来自A等于&#39;&#39;来自B和&#39; e的坐标坐标满足误差范围,因此近似等于“m”。坐标:

Node_A: ['a', 'e']
Node_B: ['k', 'm']

相反,我得到了Node_A:[&#39; c&#39;]和Node_B:[&#39; l&#39;]

2 个答案:

答案 0 :(得分:0)

更改

 if abs(lo1 - lo2) <= error and abs(la1 == la2) <= error:

 if abs(lo1 - lo2) <= error and abs(la1 - la2) <= error:

结果:

['a', 'e']
['k', 'm']

答案 1 :(得分:0)

你在第二个条件下犯了错字。

这给你一个:e,k:m:

i, j = 0, 0
for lo1,la1 in zip(X_A, Y_A):
    for lo2,la2 in zip(X_B, Y_B):
        if abs(lo1 - lo2) <= error and abs(la1 - la2) <= error:
            Node_A.append(A[i])
            Node_B.append(B[j])
            break
        j += 1
    i += 1
    j = 0