#python-3.x
Вопрос:
my_list = [1, 2]
for v in range(2):
my_list.insert(-1, my_list[v])
print(my_list)
Результат указывает 1, 1, 1, 2. Почему результат не 1, 1, 2, 2, так как v в цикле for будет 0 = 1 и 1 = 2?
Комментарии:
1. Вторая вставка происходит после того, как вы уже вставили элемент в список, переместив 2 в более поздний индекс. Попробуйте распечатать состояние списка на каждой итерации, и это будет ясно. См.также, как отлаживать небольшие программы .
Ответ №1:
list.insert(index, val)
определяет индекс элемента, перед которым необходимо вставить. Поэтому на первой итерации вы вставляете значение между 1 и 2. Ваш новый список выглядит так [1,1,2]
. На следующей итерации вы работаете с измененным списком, таким образом, вы используете только что вставленный 1, который находится v=1
сейчас. Таким образом, ваш список выглядит следующим образом
[1,1,1,2]
^ 1 2 ^
Здесь ^ — исходные значения, а 1 и 2-итерации, в которых добавляются значения.