【问题标题】:Python: lists in listPython:列表中的列表
【发布时间】: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]...等开头的数字相加,然后比较每个数字的距离,然后返回总和较低的索引?

【问题讨论】:

  • 你解决了吗?任何答案有用吗?

标签: python list for-loop


【解决方案1】:

已经检查过thisthis 甚至this? 在 stackoverflow 或其他平台上有很多解决方案,我相信你已经检查过了。那么他们有什么问题呢?

【讨论】:

  • 大声笑我很抱歉我完全忘记检查欧几里得距离作为搜索参数。如您所见,我什至没有在问题中使用它
  • 现在我检查了它们,这不是我要的。我知道如何获得距离我的函数 euclid 做到了(虽然我没有发布它的代码)问题是我如何获得具有最短欧几里德距离的列表中的列表,我应该使用什么条件。我应该计算每个列表的所有距离,然后选择与其他列表相比距离最短的列表。我也没有 numpy 模块,据我所知我不应该需要它
【解决方案2】:

你可以只使用两个变量来跟踪最低的吗?

lowest_vsota = 0
lowest_coord = []

然后在 if 块中...

if vsota < lowest_vsota:
    lowest_vsota = vsota
    lowest_coord = j

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多