我试图确定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)]
有什么建议吗?在
sorted()
未就位,它返回一个新的排序列表。或者重新分配它(lista = sorted(lista)
),或者使用list.sort()
代替(lista.sort()
)。在您可以在修复错误的同时简化大量的代码(
sorted()
操作不到位,len(lista)/2
是一个浮点数,因此不是有效的索引值,使用带有浮点数的//
并假定需要精确的浮点值,等等)。在//在这种情况下,2.0不起作用
相关问题 更多 >
编程相关推荐