我有两组列表,A和O,它们都有x,y,z坐标的点。我想计算A点和B点之间的距离。我用了一个for循环,但它只给出一个结果。结果应该是8个数字。我很感激有人能来看看。这是我项目的最后一步。在
Ax = [-232.34, -233.1, -232.44, -233.02, -232.47, -232.17, -232.6, -232.29, -231.65]
Ay = [-48.48, -49.48, -50.81, -51.42, -51.95, -52.25, -52.83, -53.63, -53.24]
Az = [-260.77, -253.6, -250.25, -248.88, -248.06, -247.59, -245.82, -243.98, -243.76]
Ox = [-302.07, -302.13, -303.13, -302.69, -303.03, -302.55, -302.6, -302.46, -302.59]
Oy = [-1.73, -3.37, -4.92, -4.85, -5.61, -5.2, -5.91, -6.41, -7.4]
Oz = [-280.1, -273.02, -269.74, -268.32, -267.45, -267.22, -266.01, -264.79, -264.96]
distance = []
for xa in A1:
for ya in A2:
for za in A3:
for x1 in o1:
for y1 in o2:
for z1 in o3:
distance += distance
distance = (((xa-x1)**2)+((ya-y1)**2)+((za-z1)**2))**(1/2)
print(distance)
你需要附加到距离而不是指定它。您应该在for循环中执行以下操作:
distance.append((((xa-x1)**2)+((ya-y1)**2)+((za-z1)**2))**(1/2))
你的第一个问题是:
尽管您将距离定义为列表。您将用一个值替换一个值列表。你想要的是
^{2}$它将把这个值添加到列表的末尾。在
第二件事:你的工作流程可以改进。不要使用那么多}的长度相同,因此:
for
循环,试着这样做:你知道A1
、A2
、A3
、o1
、o2
、和{其他人已经为你眼前的问题提供了解决方案。我还建议您开始使用
numpy
,并避免所有这些for
循环。NUMPY提供了对代码进行矢量化的方法,基本上卸载了需要对非常高效的C++实现进行的所有循环。例如,可以用以下矢量化实现替换整个嵌套For循环:相关问题 更多 >
编程相关推荐