Этот код работаетIndexError: список индексов вне диапазона при удалении дубликатов
X = ['jennifer', 1, 1, 2, 'apple', 3, 3, 1, 'apple', ['true', 'burps','taste', 'good'], ['true', 'burps', 'taste', 'good'], 3, 'jennifer']
for index in reversed(range(len(X))):
if X.count(X[index]) > 1:
X.remove(X[index])
давая мне список, без дублей
[2, 1, 'apple', ['true', 'burps', 'taste', 'good'], 3, 'jennifer']
Я просто не понимаю, почему это работает только при переходе в задний ход. Почему не следующее то же самое?
for i in range(0,len(X)):
if X.count(X[i]) > 1:
X.remove(X[i])
Я получаю сообщение об ошибке
if X.count(X[i]) > 1:
IndexError: list index out of range
В любом случае я удаление элемента из списка я читал, так почему бы первый пример не выходит из диапазона, но второй один будет? Могу ли я сделать что-то во втором примере, чтобы заставить его работать?
Это, вероятно, так, но я работаю над идеей о том, что списки являются изменяемыми, и я уверен, что это можно сделать так: я просто пропустил, как это сделать. – JMJ
Лучшим вариантом является повторение итерации назад, как говорит другой anwser. Но вы все равно можете использовать объект set, который не позволяет дублировать. – lucasmullerm