python - python: 排序列表或者排序列表返回不同的值?

  显示原文与译文双语对照的内容
71 5

处理一些东西,我遇到了一个奇怪的问题,我想出了一个问题。 我正在对列表中的10,000个值进行排序,一个用快速选择,另一个用插入排序的usgae 。 这是为了找到中值,然后使用中值,我必须找到中值值和所有值之间的总距离。 中间计算工作正常,但总的计算,因为我无法理解返回不同值的原因。 计算总计的函数中的输入是列表和中间值。 中值在程序和列表的值之间保持相同,但它的中一个列表是排序的,另一个列表没有排序。

这是我用来计算( 这上面的格式很好,只是复制到这里) 总数的。


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

一个列表被排序,另外一个没有被排序,为什么我会得到不同的值? 对于 refrence,使用插入排序时获得的距离为 49846.0,但使用quickselect时获得的距离为 29982

时间: 原作者:

67 3

你没有积累任何内容;而是在每次循环中使用新值替换 total 。 因这里,在循环末尾,totallst 最后一个元素的值。 排序列表和未排序列表通常具有不同的最后一个元素。

你可能想要的是:


total += abs(med - i)

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


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

原作者:
...