首页 > 解决方案 > python代码计算列表的中位数作为输入

问题描述

我有以下功能:

def median(list):
  if list ==[]:
    return []

  elif len(list)==1:
    return list[0]

  else: 
    list= sorted(list)
    length= len(list)+1
    median=0

    if length%2==0:
            median= (list[length/2]+list[length/2-1])/2
    else:
            median= list[length-1/2]    
  return median

当我这样称呼它时,它给了我一个错误:

median([4, 5, 5, 4])

导致错误:列表索引超出范围

PS:我是python新手,如果这是非常基本的,请原谅!

标签: python-3.x

解决方案


您在此处的列表长度中添加了 1 length= len(list)+1,这不是必需的。

如果你有一个看起来像list = [4,5,5,4] len(list)会返回 4 的列表。

如果没有这个,您的代码应该可以正常工作。

编辑:最好指定您的操作顺序:

从这样的事情:list[length-1/2]

对此:list[(length-1)/2]


推荐阅读