Перебрать список, сохранить некоторые объекты
Я пытаюсь переписать существующий список и пропустить любой индекс в списке, где 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 и итерации / индексации в целом, прежде чем начать писать этот код. Вот несколько страниц, которые могут оказаться полезными
Еще одно замечание: если вы устанавливаете переменную, равную элементу в списке, вы не можете ожидать, что этот элемент в этом списке изменится, если вы измените переменную. Это все равно что сказать, что я собираюсь сделать копию этого файла 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% понимаю проблему здесь, но я думаю, что понимаю. И этот код должен дать вам вывод, который вы хотите, учитывая введенные вами данные. НТН