ошибка в Python IndexError: list index out of range
в коде выдает ошибку IndexError: list index out of range в строке a[i].append(i - j), помогите понять, пожалуйста, почему и как это исправить
a = []
for i in range(1, 5):
a.append([])
for j in range(1, 5):
if i == j:
a[i].append(i - j)
else:
a[i].append(i - 2 * j)
for i in range(1, 5):
for j in range(1, 5):
print("%3d" % a[i][j], end=' ')
print()
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Индексация списков в Питоне идёт с нуля. Когда вы первый раз делаете a.append([]) - у вас добавится элемент с индексом 0. А дальше вы делаете a[i].append(...), при том что у вас range() от 1, т.е. вы обращаетесь к элементу с индексом 1, которого еще не существует.
Так что, либо каждый раз вычитать из индексов единицу.
a = []
for i in range(1, 5):
a.append([])
for j in range(1, 5):
if i == j:
a[i-1].append(i - j)
else:
a[i-1].append(i - 2 * j)
for i in range(1, 5):
for j in range(1, 5):
print("%3d" % a[i-1][j-1], end=' ')
print()
Либо переделать на индексацию с нуля (и формулы поменять если потребуется, т.к. i и j уже другие):
a = []
for i in range(4):
a.append([])
for j in range(4):
if i == j:
a[i].append(i - j)
else:
a[i].append(i - 2 * j - 1) # << формула поменена
for i in range(4):
for j in range(4):
print("%3d" % a[i][j], end=' ')
print()