[英]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.