Два противоположных итератора, ошибка диапазона индекса назначения списка - PullRequest
0 голосов
/ 18 ноября 2018

Этот код должен инвертировать первые number элементы в my_list, сохраняя при этом оставшуюся часть списка в исходном порядке.

list_copy = []
i = 0
j = number - 1
while i < number or j >= 0:
    list_copy[i] = my_list[j]
    i += 1
    j -= 1

for i in range(number,length(my_list)):
    list_copy[i] = my_list[i]

Я использовал ручку и бумагу для запуска итераций и не могу понять, почему я получаю «индекс назначения списка вне диапазона». Чего мне не хватает?

1 Ответ

0 голосов
/ 18 ноября 2018
list_copy = my_list[0:NUMBER-1]

- скопировать первые элементы NUMBER из my_list в list_copy

my_list = my_list[NUMBER-1:]

- удалить первые элементы NUMBER из my_list

Обновление без нарезки:

list_copy = []
j = number - 1
while j >= 0:
    list_copy.append(my_list[j])
    del my_list[j] # if you need remove elements from original list
    j -= 1

У вас действительно был «индекс вне диапазона», потому что интерпретатор Python пытается получить list_copy [i] из пустого списка.Просто используйте list_copy.append () для заполнения пустых списков.

...