我有一个清单。一旦我创建它,结果print list
是:
[1, 3, 5, 60, 72, 83, 120, 180]
然后将其作为参数传递给函数。在该函数的第一行(未对列表进行任何更改),它被传递给另一个函数。在此处打印列表会产生以下结果:
[1, 3, 5, 60, 72, 83, 120, 180]
[]
同样,这是在其他任何事情完成之前。第二个功能是:
def median(li):
print li
lenli = len(li)
if lenli%2==0:
i = (((lenli/2) + (lenli/2 + 1)) / 2)
print i
return li[i]
else:
return l[lenli/2 - 1]
一旦程序到达return li[i]
,它就会抛出这个错误:IndexError: list index out of range
任何想法我做错了什么?我尝试访问列表 (0,1) 的其他元素,但仍然抛出相同的错误。
编辑:第一个功能是:
def binarysearch(target, tosearch):
print tosearch
i = median(tosearch)
while(i != target):
if i < target:
del tosearch[i:len(tosearch)]
else:
del tosearch[0:i]
i = median(tosearch)
return True
EDIT2 一个示例输入是这个数字列表,作为源列表和作为目标[1, 3, 5, 60, 72, 83, 120, 180]
的 int 。5
然后第一次调用median()
应该返回72
,然后是每个缩短列表的中值,因为它被调用binarysearch()
。最终binarysearch()
应该返回 True。