Перебрать список, сохранить некоторые объекты

Я пытаюсь переписать существующий список и пропустить любой индекс в списке, где value[i] = -1сохраняя это значение в правильном индексе.

Одна проблема заключается в том, что значение last_item, похоже, переносится в конец списка, есть ли способ предотвратить это? Иначе, есть ли лучший способ сделать это? Это кажется слишком неуклюжим со всей логикой.

Данные выглядят так:

-1
 1
 2
 3
-1
 1
 2
 3

И я пытаюсь заставить его выглядеть так:

-1
 1
 2
 3
-1
 4
 5...

РЕДАКТИРОВАТЬ Я изменил код, который Алекс разместил ниже, теперь он отлично работает. Вот код, который я использовал:

count = 1
for i range(len(my_list)):
    if my_list[i] == -1:
        new_list.append(-1)
    else:
        my_list[i] = count
        count += 1
        new_list.append(my_list[i])

1 ответ

Решение

Возможно, вы захотите освежить в списках Python, циклах Python и итерации / индексации в целом, прежде чем начать писать этот код. Вот несколько страниц, которые могут оказаться полезными

Введение в списки Python

Для циклов в Python

Цикл со списками в Python

Еще одно замечание: если вы устанавливаете переменную, равную элементу в списке, вы не можете ожидать, что этот элемент в этом списке изменится, если вы измените переменную. Это все равно что сказать, что я собираюсь сделать копию этого файла cookie, который выглядит и имеет вкус точно так же, как этот другой файл cookie. Затем, если вы съедите второе печенье (то, которое вы сделали), первое будет существовать до тех пор, пока вы не войдете и не съедите это печенье.

То же самое касается итерирующей переменной, т.е. Когда вы проверяете, если я ==-1, вы на самом деле говорите только: "Это первый цикл в моем цикле? потому что вы начинаете цикл с -1. Все это должно иметь больше смысла, когда вы просматриваете эти статьи цикла.

Круто, данные ввода / вывода очень помогают. Теперь это имеет больше смысла.

Как насчет этого:

count = 1
for i range(len(my_list)):
    if my_list[i] = -1:
        continue
    else:
        my_list[i] = count
        count++

куда my_list это список ввода

Я не на 100% понимаю проблему здесь, но я думаю, что понимаю. И этот код должен дать вам вывод, который вы хотите, учитывая введенные вами данные. НТН

Другие вопросы по тегам