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
,我不知道这意味着什么。这是我的实验室作业。试图解决这个问题。有帮助吗?感谢。
答案 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)
您尝试使用lst
将lst(...)
用作功能。尝试使用方括号lst[...]
。
答案 3 :(得分:1)
其他海报曾说过。使用方括号[]
代替括号()
来访问列表元素。例如。 lst[index]
此外,您正在尝试访问列表外的元素。
不要使用lst[len(lst)]
- 您自动获得索引超出范围的异常。
相反,请使用lst[len(lst)-1]
。
另外,不要使用math.abs,python中不存在该函数。而是使用math.fabs