python-3.x - 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新手,如果这是非常基本的,请原谅!
解决方案
您在此处的列表长度中添加了 1 length= len(list)+1
,这不是必需的。
如果你有一个看起来像list = [4,5,5,4]
len(list)
会返回 4 的列表。
如果没有这个,您的代码应该可以正常工作。
编辑:最好指定您的操作顺序:
从这样的事情:list[length-1/2]
对此:list[(length-1)/2]
推荐阅读
- vb.net - 修改 Outlook 按钮的默认行为
- android - 如何在不连接的情况下检查我的 Logcat?
- spring-cloud - 如何使用 DiscoveredResource 遍历 RepositoryRestResource 暴露的单个实体资源
- asp.net-core - 为什么 Ctrl+C 不停止通用主机?
- c# - 从动态队列 RabbitMQ 读取数据
- python - 在python中使用selenium搜索电子邮件地址并在没有结果时返回信息失败
- docker - 主体反序列化失败(提供的身份无效:x509:证书已过期或尚未生效)
- ios - 在Objective C中添加二维数组的对角线
- python - 具有(单个)最大分区大小的星形和条形
- javascript - 道具更改时反应组件不重新渲染