Когда вы даете отрицательный индекс, возвращается значение по этому индексу. Для списка a = [1,2,3]
мы можем сказать
value 1 is at index 0
value 2 is at index 1
value 3 is at index 2
или
value 3 is at index -1
value 2 is at index -2
value 1 is at index -3
Если вы go вне этого диапазона индексов, которые От минус 3 до плюс 3 вы получите
IndexError: list index out of range
Для вашего кода секунда для блока никогда не выполняется, и, следовательно, вы не видите ошибку индекса.
x = 10
l = [1]
for i in range(x):
print("Row", i + 1, l)
newlist = []
newlist.append(l[0])
# Length l is 0,so below code inside for is never executed as range is empty
for i in range(len(l) - 1):
newlist.append(l[i] + l[i+1])
newlist.append(l[-1])
l = newlist