0

これは私がやったことですが、これはリスト内の1つのアイテムしか見つけません。アイテム36の両方のインデックスを印刷したいです。これを投稿した方法または質問が明確でない場合は、これまでに行ったことを助けてください。申し訳ありません事前に[コード]

def main():

    mylist=[]
    for i in range(20):
        mylist.append(i*3)

    mylist.append(36)
    mylist.sort()
    print mylist
    binarySearch(mylist,0,len(mylist),36)

def binarySearch(thelist,lower,upper,item):

    if upper<lower:

        print 'item not in the list'
        return 

    middle=(lower+upper)/2

    if thelist[middle]<item:
        lower=middle+1
        binarySearch(thelist,lower,upper,item)

    elif thelist[middle]>item:
        upper=middle-1
        binarySearch(thelist,lower,upper,item)

    else: 
        print 'the item was found at index ',thelist[middle],middle
        return

main()
4

1 に答える 1

0

これを処理する関数を作成し、1 つの整数ではなくインデックスのリストを返すことができます。

def check_for_number_around_index(index, sorted_list):
  indices = [index]
  i = index - 1
  while(i >= 0 and sorted_list[i] == sorted_list[index]):
    indicies.append(i)
    i = i - 1
  i = index + 1
  while( i < len(sorted_list) and sorted_list[i] == sorted_list[index]):
    indicies.append(i)
    i = i + 1
  return indicies
于 2012-08-13T17:50:02.683 に答える