Python列表错误不可调用

时间:2013-10-08 22:17:10

标签: python list

import math

def getBestLoc(lst):
    if len(lst) % 2 == 0:
        #bestLoc = (lst((len(lst)/2) + lst(len(lst)/2)-1))/2
        bestLoc = ((lst[len(lst)]//2) + (lst[len(lst)/2]-1)) // 2
    else:
        bestLoc = lst(len(lst)//2)
    sumOfDistances(lst, bestLoc)
    return bestLoc

def sumOfDistances(lst, bestLoc):
    total = 0
    for i in lst:
        total += math.abs(bestLoc - i)
    return total

def main():
    lst = [10, 15, 30, 200]
    lst.sort()
    print(lst)
    getBestLoc(lst)

main()

我收到了这个错误:

Traceback (most recent call last):
  File "C:\Users\NAME\Desktop\storeLocation.py", line 32, in <module>
    main()
  File "C:\Users\NAME\Desktop\storeLocation.py", line 30, in main
    getBestLoc(lst)
  File "C:\Users\NAME\Desktop\storeLocation.py", line 14, in getBestLoc
    bestLoc = ((lst[len(lst)]//2) + (lst[len(lst)/2]-1)) // 2
IndexError: list index out of range

我不知道我做错了什么。它说,IndexError: list index out of range,我不知道这意味着什么。这是我的实验室作业。试图解决这个问题。有帮助吗?感谢。

4 个答案:

答案 0 :(得分:4)

您需要使用[]访问列表中的元素,而不是将其称为()的函数。替换:

bestLoc = ((lst(len(lst))/2) + (lst(len(lst)/2)-1)) / 2

bestLoc = ((lst[len(lst)]/2) + (lst[len(lst)/2]-1)) / 2

答案 1 :(得分:2)

访问list元素使用方括号[]而不是()

应该是

((lst[len(lst)]/2) + (lst[len(lst)/2]-1)) / 2

与else:子句相同的事情

答案 2 :(得分:2)

您尝试使用lstlst(...)用作功能。尝试使用方括号lst[...]

答案 3 :(得分:1)

其他海报曾说过。使用方括号[]代替括号()来访问列表元素。例如。 lst[index]此外,您正在尝试访问列表外的元素。

不要使用lst[len(lst)] - 您自动获得索引超出范围的异常。 相反,请使用lst[len(lst)-1]

另外,不要使用math.abs,python中不存在该函数。而是使用math.fabs