@grandmilky

Почему значение len(списка) не меняется в range?

Условие задачи: Вводится список в виде целых чисел в одну строку через пробел. Сначала нужно сформировать список из введенной строки. Затем, каждый элемент этого списка продублировать один раз. Результат отобразить на экране в виде строки полученных чисел, записанных через пробел.

Мое решение:
a = input().split()
for i in range(0, len(a)*2, 2 ):
    a.insert(i, a[i])
        
print(*a)


пример входных данных: 8 11 2
результат: 8 8 11 11 2 2
Я так и не понял почему значение "len(a)" записанное в качестве окончания диапазона range, не меняло свое значение и мне пришлось просто изначально умножить это значение на 2.

Хотя с каждой итерацией цикла длина списка увеличивалась, и если написать print(len(a)) в цикле, то выводило бы 4, 5, 6....
прошу именно ответить на вопрос, а не предлагать другие решения
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Потому что len(a) ситается в начале цикле и передаётся в range, который вызывается один раз и больше не вызывается повторно. Чтобы вызывался, надо вместо for использовать while с условием, а итерируемое значение явно увеличивать в каждой итерации цикла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы