【发布时间】:2011-12-04 16:07:45
【问题描述】:
我一直在尝试从此列表中获取 mediana,这意味着具有最短 Euclidean distance 的列表。
我创建了一个函数 euclid,它返回 2 个向量之间的距离,而不管它们的大小,但是我遇到了 2 个 for 循环的问题。
这个程序应该返回 [1,2,3]
xs=[[1, 1, 1], [3, 2, 1], [1, 0, 3], [1, 2, 3], [4, 4, 4]]
naj = 0
vsota=0
ys=[]
for i,j in enumerate(xs):
for x,y in enumerate(xs):
if j!=y:
vsota=euclid(j,y)
print(vsota," ",j,y)
但它目前返回:
2.23606797749979 [1, 1, 1] [3, 2, 1]
2.23606797749979 [1, 1, 1] [1, 0, 3]
2.23606797749979 [1, 1, 1] [1, 2, 3]
5.196152422706632 [1, 1, 1] [4, 4, 4]
2.23606797749979 [3, 2, 1] [1, 1, 1]
3.4641016151377544 [3, 2, 1] [1, 0, 3]
2.8284271247461903 [3, 2, 1] [1, 2, 3]
3.7416573867739413 [3, 2, 1] [4, 4, 4]
2.23606797749979 [1, 0, 3] [1, 1, 1]
3.4641016151377544 [1, 0, 3] [3, 2, 1]
2.0 [1, 0, 3] [1, 2, 3]
5.0990195135927845 [1, 0, 3] [4, 4, 4]
2.23606797749979 [1, 2, 3] [1, 1, 1]
2.8284271247461903 [1, 2, 3] [3, 2, 1]
2.0 [1, 2, 3] [1, 0, 3]
3.7416573867739413 [1, 2, 3] [4, 4, 4]
5.196152422706632 [4, 4, 4] [1, 1, 1]
3.7416573867739413 [4, 4, 4] [3, 2, 1]
5.0990195135927845 [4, 4, 4] [1, 0, 3]
3.7416573867739413 [4, 4, 4] [1, 2, 3]
如何将所有以 [1,1,1]、[3,2,1]...等开头的数字相加,然后比较每个数字的距离,然后返回总和较低的索引?
【问题讨论】:
-
你解决了吗?任何答案有用吗?