Я хочу удалить или добавить элемент списка, когда я просматриваю его - PullRequest
0 голосов
/ 25 марта 2019

Я хочу удалить или добавить элемент списка, когда я просматриваю его, но IndexError: индекс списка вне диапазона

listStep = ['0', '0', '0', '1', '1', '1', '3', '1', '3', '0']

for i in range(0, len(listStep) - 2, 2):
    for j in range(i + 2, len(listStep), 2):
        if listStep[i + 1] == listStep[j + 1]:
            listStep[i] = listStep[i] + listStep[j]
            listStep.pop(j)
            listStep.pop(j)

print(listStep)

Желаемый вывод:

['03', '0', '013', '1']

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Обычно отключается на одну ошибку , потому что индексы массива начинаются с 0 и заканчиваются на length - 1.Т.е. listStep[i + 1]] для i == len(listStep) - 1 (последнее значение range()) равно len(listStep), т.е. вы получаете доступ к одному элементу за концом списка.

Вы также изменяете список по мере обработкиэто так len(listStep) меняет свое значение.

0 голосов
/ 25 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...