Возвращает индекс первого целого числа в списке, который меньше его индекса

#python

Вопрос:

Я новичок в python и не знаю, как это сделать.
Кто-нибудь знает, как я могу исправить свой код, пожалуйста?

 def smaller_index(items: list[int]) -gt; int:  """  Return the index of the first integer in items that is less than its index,  or -1 if no such integer exists in items.    gt;gt;gt; smaller_index([2, 5, 7, 99, 6])  -1  gt;gt;gt; smaller_index([-5, 8, 9, 16])  0  gt;gt;gt; smaller_index([5, 8, 9, 0, 1, 3])  3  """  min_value = min(items)  if items.count(min_value) gt; 1:  return [i for i, x in enumerate(items) if x == min(items)]  else:  return items.index(min(items))  

Комментарии:

1. Пройдите по списку. Для каждого элемента проверьте, меньше ли он его индекса. Если это так, верните индекс этого элемента.

2. next(v for i, v in enumerate(vs) if v lt; i)

3. На самом деле, вы не за горами для начала enumerate(items) — просто нужно сравнить idx, num…

4. Название вашего поста и логика в вашем опубликованном коде не совпадают.

Ответ №1:

Вот решение этой проблемы.

 def smaller_index(items: list) -gt; int:  """  Return the index of the first integer in items that is less than its index,  or -1 if no such integer exists in items.   #gt;gt;gt; smaller_index([2, 5, 7, 99, 6])  -1  #gt;gt;gt; smaller_index([-5, 8, 9, 16])  0  #gt;gt;gt; smaller_index([5, 8, 9, 0, 1, 3])  3  """  for i in range(len(items)):  if items[i] lt; i:  return i  return -1  print(smaller_index([5, 8, 9, 0, 1, 3]))  

Нарушение логики:

  • Я изменил тип данных, указанный для элементов из списка[int], на список-по какой — то причине это указывало на ошибку (необходимо продолжить расследование)
  • Выполните итерацию по списку, используя индексы их элементов — сравните их и, если ваше условие выполнено, верните значение индекса.
  • Если ни один элемент в элементе не удовлетворяет вашему условию, после завершения цикла for верните значение -1

Ответ №2:

 def smaller_index(items: list) -gt; int:  for i, n in enumerate(items):  if n lt; i:  return i  return -1  

Предполагая, что я понимаю, что вы пытаетесь сделать, это может быть так просто, как вы хотите.