如果我没看错你的问题,你可以这样做:
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