n个元素列表中的中值

2024-04-18 12:12:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图确定n个元素列表的中值,但是我看不出我做错了什么。在

我有sorted(list),这样元素的顺序是正确的,但是我得到了5.0的中值,而不是正确的4.5。在

我的代码是这样的。在

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)]

有什么建议吗?在


Tags: 代码元素列表lenreturn顺序deflist
3条回答

sorted()未就位,它返回一个新的排序列表。或者重新分配它(lista = sorted(lista)),或者使用list.sort()代替(lista.sort())。在

您可以在修复错误的同时简化大量的代码(sorted()操作不到位,len(lista)/2是一个浮点数,因此不是有效的索引值,使用带有浮点数的//并假定需要精确的浮点值,等等)。在

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]
>>> 5//2.0
2.0
>>> float(5)/2.0
2.5

//在这种情况下,2.0不起作用

相关问题 更多 >