我目前正在通过一个名为“计算机科学圈”的网站开展工作。我已经达到问题13,这是关于列表的。
编码练习是:
写一个函数middle(L),它以列表L作为参数,并返回L的中间位置的项目。(为了使中间定义明确,你应该假设L有奇数长度。 ) 例如,调用middle([8,0,100,12,1])应该返回100,因为它正好位于列表的中间。
到目前为止,我的代码看起来像这样:
def middle(L):
L = sorted(L)
n = len(L)
m = n - 1
return (L[n/2] + L[m/2] / 2.0)
但是,每次运行代码时,它都会给我一个
TypeError: list indices must be integers, not float
我不完全确定如何更改我的代码,以便它可以根据任务成功运行。
答案 0 :(得分:1)
运营商/
正在执行" true"除法(float
),而//
是整数除法。
就算法本身而言,您可以简单地将长度缩短一半
def middle(L):
return L[len(L)//2]
>>> middle([8, 0, 100, 12, 1])
100