繁体   English   中英

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

[英]Python: Unsorted/Sorted Lists Return Different Values?

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

这是我用来计算总数的东西(格式化就好了,它只是复制到这里很奇怪)...

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM