Как цикл for оценивает свой аргумент

Мой вопрос очень простой.

Делаетfor цикл оценивает аргумент, который он использует каждый раз?

Такие как:

for i in range(300):

Создает ли python список из 300 элементов для каждой итерации этого цикла?

Если это так, это способ избежать этого?

lst = range(300)
for i in lst:
    #loop body

То же самое касается примеров кода, подобных этому.

for i in reversed(lst):

for k in range(len(lst)):

Применяется ли обратный процесс каждый раз или длина рассчитывается на каждой итерации? (Я спрашиваю это как для python2, так и для python3)

Если нет, то как Python оценивает изменения итерируемого при его повторении?

Ответы на вопрос(3)

Ваш ответ на вопрос