函数计数中位数(python)

时间:2017-06-29 23:02:52

标签: python median

def median(lista):
    if len(lista) % 2 == 1:
        float(x) = (len(lista))/(2)
        lista2 = sorted(lista)
        y = x + 0.5
        return lista2[y]
    else:
        x = len(lista)
        total = 0
        for i in lista:
            total += i
        return total/x

这个功能出了什么问题?它显示错误

  

File" python",第3行   SyntaxError:不能分配给函数调用

我知道你可以告诉我如何以100万种不同的方式编写这个函数,但是你能解释为什么这个版本不起作用吗?

提前致谢。

3 个答案:

答案 0 :(得分:0)

float转换适用于作业float(x) = (len(lista))/(2)的错误一侧。将其移至另一个,如x = float((len(lista))/(2)),代码可以

答案 1 :(得分:0)

认为你试图获得一半的浮动值;是吗?

如果是这样,您必须在功能上需要的地方应用float转换,而不是将其作为语言修饰符:

x = float(len(lista))/(2)

或者简单地用浮点常数强制该结果:

x = len(lista) / 2.0

答案 2 :(得分:0)

您的功能有几个问题:

def median(lista):
    if len(lista) % 2 == 1:
        float(x) = (len(lista))/(2)  # you assign to a function?
        lista2 = sorted(lista)
        y = x + 0.5                  # y is now a float
        return lista2[y]             # accessing the float index?
    else:                            # here you calculate the average
        x = len(lista)
        total = 0
        for i in lista:
            total += i
        return total/x

偶数列表的中位数不是平均值。它是中间两个元素的平均值

您可以简单地编写以下函数:

def median(lista):
    listb = sorted(lista)
    n_lista = len(lista)
    half = n_lista//2
    if n_lista % 2:
        return lista[half]
    else:
        return 0.5*(lista[half-1]+lista[half])