Я делал домашнее задание из 8-й главы "Think Python", упражнение 8, и я устал от кода выше, написанного Фредом.похоже, есть некоторые ошибки.1. счетчик не работает для длинного списка со 100k строк 2. иногда он возвращает None для вещей, которые, я уверен, есть в списке.
так что я немного подправил:
это моя версия:
она работает очень хорошо, она проверила его с помощью списка слов из swampy 2.0 с именем words.txt,которая изначально была из коллекции moby: 113809of.fic
надеюсь, это поможет тем из вас, кто борется с программой bisect
def bisects (list,x,counter=0):
if len(list)==0:
return x,'is not in the list'
elif(len(list)==1):
middle = 0
else:
middle = int(len(list)/2)
if x == list[middle]:
return counter, x,'is in the list'
elif x < list[middle]:
counter +=0
return bisects(list[0:middle],x,counter)
elif x > list[middle]:
counter +=middle
return bisects(list[middle+1:],x,counter)
Также будет здорово, если гуру поможет мне исправить этот недостатокспасибо