リストがあります。作成するとすぐに、の結果print list
は次のとおりです。
[1, 3, 5, 60, 72, 83, 120, 180]
その後、引数として関数に渡されます。その関数の最初の行 (リストへの変更は行われていません) で、別の関数に渡されます。ここでリストを印刷すると、次のようになります。
[1, 3, 5, 60, 72, 83, 120, 180]
[]
繰り返しますが、これは他の作業が行われる前です。2 番目の関数は次のとおりです。
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]
、ソースリストとしてこの数値リスト5
、ターゲットとして int です。の最初の呼び出しはmedian()
を返し72
、続いて で呼び出された各短縮リストの中央値を返しbinarysearch()
ます。最終的binarysearch()
に True を返す必要があります。