Ваши рассуждения довольно запутанные, и я не вижу ЛЮБОГО приложения для этого, но вот как я понимаю вашу проблему ...
Причина в том, что вы не 'Фактически, возвращая значения, вы просто возвращаете индекс + 3, что неправильно с самого начала.Вы пытаетесь указать новый индекс массива на основе его значения и вернуть индекс, если он содержит значение больше 0.
Вам нужно обратиться к нужному индексу, проверьте егозначение, а затем вернуть индекс, который содержит значение.
a = [0, 0, 1, 0, 0, 1, 0]
for i, v in enumerate(a):
if i == 0:
print(i)
next
if v == 0:
next
else
print(i)
Но давайте будем честными, это очень уродливо и непитонно.Давайте просто проверим, содержит ли [i] значение, и если да, вернем индекс ...
for i, v in enumerate(a):
if v or i == 0:
print(i)
Цель if v or i == 0
- проверить, имеет ли v значение, если так,распечатать указатель.ИЛИ, если мы смотрим на первый элемент i.
Если вы хотите ТОЧНО переместить индекс на два, вы должны установить свой индекс в начале и использовать цикл while, поскольку перечисление не может вам помочьздесь и фактически не позволяет вам перемещать индикаторы ...
a = [0, 0, 1, 0, 0, 1, 0]
i = 0
while i < len(a) - 1: # -1 to avoid out of bounds error
print(i)
if a[i + 2] == 0:
i += 2
elif a[i + 2] == 1:
i += 1
print(i) # Final print statement for the last index at the end of the while loop
Я хочу поразить вас тем фактом, что это решение НЕ масштабируется с другими или большими списками, поэтому оно нерекомендуемые.Просто проверяя, существует ли значение или нет, вы гарантируете свою точность.
Вы должны просто вернуть индекс на основе того, содержит ли оно значение.Даже для очень больших списков это будет очень быстро и всегда будет масштабироваться даже для значений больше 1.
Единственная другая причина, по которой я хотел бы видеть, что вы захотите сделать это по-другому, это если вы делаетеАлгоритмы поиска строк.