My function doesn’t stop when the first time the condition is met (the lowest value in list started when started at start_index). What do I have to add to achieve it.
My code is:
def index_min(l, start_index):
min_ele = l[start_index]
idx = []
for i in range(start_index, len(l)):
if l[i] <= min_ele:
min_ele = l[i]
idx = i
return idx
print(index_of_min([10, 7, 19, 16, 5, 10, 5, 1, 5, 4, 6, 2, 3, 7, 12, 8, 9, 18, 1, 10, 7, 18],6))
It returns index 18 instead of index 7
start index is 6.
>Solution :
I’m assuming you meant to call index_min() in the print() statement.
If you’re looking to get the first appearance of the smallest number, you can change the <= to a <:
def index_min(l, start_index):
min_ele = l[start_index]
idx = []
for i in range(start_index, len(l)):
# If we see a value equal to the minimum seen so far, don't update the index.
if l[i] < min_ele:
min_ele = l[i]
idx = i
return idx
print(index_min([10, 7, 19, 16, 5, 10, 5, 1, 5, 4, 6, 2, 3, 7, 12, 8, 9, 18, 1, 10, 7, 18],6))