Python:未排序/排序的列表返回不同的值



做一些事情时,我遇到了一个奇怪的问题,我很难弄清楚。我正在以两种方式对包含 10,000 个值的列表进行排序,一种使用快速选择,另一种使用插入排序的 usgae。这样做的目的是找到一个中位数,然后使用所述中位数我必须找到中值和所有值之间的总距离。中位数计算工作得很好,但由于我无法理解的原因,总计算返回不同的值。计算总数的函数的输入是列表和中位数。两个程序之间的中位数保持不变,列表的值也是如此,但是其中一个列表被排序,另一个列表没有排序。

这是我用来计算总数的方法(格式化很好,它只是复制到这里很奇怪(......

def ttlDist(lst, med):
    total = 0
    for i in lst:
        total = abs(med - i)
    print(total)

如果一个列表被排序而另一个列表没有排序,为什么我会得到截然不同的值?对于引用,使用插入排序时获得的距离是 49846.0,但使用快速选择时获得的距离是 29982

> 你没有积累任何东西;每次通过循环,你都会用一个新值替换total。因此,在循环结束时,total是来自lst最后一个元素的值。排序列表和未排序列表通常具有不同的最后元素。

您可能想要的是:

total += abs(med - i)

或者,更简单地说,将整个函数替换为:

total = sum(abs(med-i) for i in lst)

相关内容

  • 没有找到相关文章

最新更新