擅长:python、mysql、java
<p>因为Python3.4有一个<a href="https://docs.python.org/3/library/statistics.html" rel="nofollow">^{<cd1>}</a>模块:</p>
<pre><code>import statistics
statistics.median_low(my_vals_sorted)
statistics.median_high(my_vals_sorted)
</code></pre>
<p><code>median_low</code>和<code>median_high</code>可以处理未排序的数据(将首先对它们排序)。如果数据已经被排序了(如变量名所示),或者如果您使用的是早期的python,那么您可能会比复制<code>statistics</code>的<a href="https://hg.python.org/cpython/file/3.5/Lib/statistics.py" rel="nofollow">source</a>做得更糟。下面的代码主要是从那里复制过来的,并进行了一些修改(删除排序,用generic <code>ValueError</code>替换<code>StatisticsError</code>):</p>
<pre><code>def median_low(data):
n = len(data)
if n == 0:
raise ValueError("no median for empty data")
if n % 2 == 1:
return data[n//2]
else:
return data[n//2 - 1]
def median_high(data):
n = len(data)
if n == 0:
raise ValueError("no median for empty data")
return data[n//2]
</code></pre>