Перебор списка, который вы одновременно обновляете, является плохой практикой.
В вашем коде диапазон уже вычислен до запуска цикла, поэтому диапазон будет range(1)
, а затем дляцикл запускается только один раз и останавливается.Это также можно наблюдать, если listWords
не пусто, а равно listWords = ['a','b']
, поэтому цикл запускается 3 раза, поскольку итератор равен range(3)
Тогда код становится равным.
listWords = ['a','b']
for i in range (len(listWords)+1):
listWords.append("New word")
print ("End loop")
print(listWords)
['a', 'b', 'New word', 'New word', 'New word']
Хотя цикл не имеет такого ограничения, приведенный ниже пример будет продолжать работать, поскольку len (listWords) всегда обновляется в конце следующей итерации
listWords = []
i = 0
while i < (len(listWords)+1):
listWords.append("New word")
i+=1