我有四个列表代表列表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;]
答案 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