2016-12-26 8 views
0

n個の要素のリストの中央値を決定しようとしていますが、私は何が間違っているのか分かりません。n個の要素のリストの中央値

私はsorted(list)を持っていますので、要素は正しい順序ですが、正しい4.5の代わりに5.0の中央値が得られます。

私のコードは次のようになっています。

def median(lista): 
    median_even1 = 0 
    median_even2 = 0 
    median_sum = 0 
    median_average = 0 
    if len(lista) % 2 == 0: 
     sorted(lista) 
     median_even1 += lista[(len(lista)/2)] 
     median_even2 += lista[(len(lista)/2 - 1)] 
     median_sum = median_even1 + median_even2 
     median_average = (median_sum) // (2.0) 
     return median_average 
    else: 
     sorted(lista) 
     return lista[(len(lista)/2)] 

お勧めはありますか?

答えて

7

sorted()が存在しない場合は、新しいソート済みリストを返します。再割り当て(lista = sorted(lista))、代わりにlist.sort()lista.sort())を使用してください。

+0

OMGは、あなたにこのコードはまだPythonの3のトレースバックを(引き起こす少なくとも一つは、いくつかのミスを、持っていることを –

+0

注意を感謝し、私はこれは、Python 2であると仮定し...まだ、生産間違った答え)。 – TigerhawkT3

0
>>> 5//2.0 
2.0 
>>> float(5)/2.0 
2.5 

//2.0は、この場合には動作しません

ため、浮動小数点数としていないこと、場所に動作していない( len(lista)/2sorted()をエラーを修正しているときは、その多くのコードを合理化することができます
1

有効なインデックス値。//とfloatリテラルを使用し、正確な浮動小数点数が予想されるなど)。私は愚かな感じ

def median(lista): 
    lista = sorted(lista) 
    half = len(lista)//2 
    if half == len(lista)/2: 
     return (lista[half]+lista[half-1])/2. 
    return lista[half] 
関連する問題