查找列表的中间对象

时间:2016-06-01 08:11:56

标签: python python-3.x

我需要这个python 3练习的帮助,以找到列表的中位数。你应该定义并制定自己的功能,这就是我所做的。

EXERCISE:

  

编写一个函数middle(L),它以列表L作为参数,并返回L中间位置的项。 (为了使中间定义明确,您应该假设L具有奇数长度。)例如,调用middle([8, 0, 100, 12, 1])应该返回100,因为它恰好位于中间列表。

这是我的代码:

def middle(a):
    a = sorted(a)
    l = len(a)

    if len(a) % 2 == 0.:
        m = (a[int(l / 2)] + a[int(l / 2) - 1]) / 2.
    else:
        if l < 2:
            m = a[0]
        else:
            m = a[int(l / 2)]

    return m

当我在另一个网站上尝试这个时,它起作用了。但是当我把它放在这个网站上时,我得到以下错误:

  

程序执行时没有崩溃。       平地机说:       中间运行([8,0,100,12,1])...错误:中间([8,0,100,12,1])错误值8,预期100

参数名称为a而不是L与错误答案无关,因为我已尝试将其更改为L

更新

感谢您的帮助。我在移除A = SORTED(A) CHUNK时工作了。

2 个答案:

答案 0 :(得分:1)

似乎你误读了赋值并写了一个函数来返回中位数,而问题是返回 middle 。如果您删除了a=sorted(a)它应该有效。

答案 1 :(得分:0)

阅读作业。您只需要返回列表中间的项目。没有排序,没有中位数。你可以假设列表总是有一个奇怪的长度。

def middle(L):
    return L[len(L) // 2]