【问题标题】:python if elif different result [closed]python if elif不同的结果[关闭]
【发布时间】:2014-05-25 14:48:38
【问题描述】:

如何找到第一个、最后一个和中间元素的中位数,然后将中位数与第一个元素交换?

【问题讨论】:

  • 没有人会忽视不好的部分。请确保您的问题准确无误,并且仅在此处发布相关代码。
  • 如果我加粗会有帮助吗,我觉得如果人们看不到参考文献会迷路吗?
  • 说实话,大多数人不会有兴趣通过大量代码来了解真正的问题。
  • +1 以获得更简洁和详细的重写
  • 这段代码读起来很痛苦;如果您将标记隔开,您更有可能收到答案。

标签: python if-statement quicksort median


【解决方案1】:

如果我没看错你的问题,你可以这样做:

from numpy import median

values    = [1,2,3,4,5,6]
med       = median([values[0], values[len(values)/2], values[-1]]) # calculate median of first, middle and last element in the list
values[0] = med # replace first element with median

结果:

>>> med
4.0
>>> values
[4.0,2,3,4,5,6]

这会以书面形式回答您的问题,但我不确定这是否正是您想要的。您可以尝试重新措辞您的问题,使其更清楚您希望最终输出列表的样子。

更新

如 cmets 中所述,将列表中等于中值的值与第一个元素交换似乎是所需的输出。在这种情况下,请尝试以下操作:

halfway_idx = len(values)/2
med         = median([values[0], values[halfway_idx], values[-1]])
if med == values[0]:
   pass # median already is in the first position
elif med == values[halfway_idx]:
   values[0], values[halfway_idx] = values[halfway_idx], values[0] #swap middle and first
else:
   values[0], values[-1] = values[-1], values[0] # swap first and last

【讨论】:

  • 嗯,我需要他们交换。所以第一个元素是中位数位置,中位数是第一个位置。抱歉迟到了,正在安装 numpy :D
  • 非常感谢。它有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 2016-07-11
  • 2017-05-03
相关资源
最近更新 更多