индекс назначения списка вне диапазона при попытке удалить элемент по индексу

У меня есть следующий список в Python:

x = [[1,2],[3,4],[5,'inf'],[6,7],['nan',10]]

У меня также есть следующий список индексов:

idx = [2,4]

Я пытаюсь удалить элементы из списка x, соответствующие значениям индекса в idx. Для этого я сделал следующее:

for i in idx:
    del x[i]

Однако я получил следующую ошибку:

IndexError: list assignment index out of range

Как я могу решить эту проблему?


person Simplicity    schedule 23.01.2018    source источник
comment
Либо используйте понимание списка, либо выполните итерацию в обратном порядке по индексу и удалите.   -  person cs95    schedule 23.01.2018
comment
Альтернативный обман: Как удалить несколько индексов из списка одновременно   -  person Aran-Fey    schedule 23.01.2018


Ответы (1)


Вы удаляете индекс 2, затем индекс 4. Индекс 4 является последним элементом. Поскольку вы удаляете индекс 2, последний индекс становится индексом 3. Таким образом, доступ к индексу 4 вызывает ошибку.

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

person IMCoins    schedule 23.01.2018
comment
@Willem Van Onsem Не знаю, если бы вы проголосовали против, но он называл индексы, а не элементы. - person IMCoins; 23.01.2018