Форум сайта python.su
0
Добрый день!
Необходимо элементам, находящимся на главной диагонали, проходящей из левого верхнего угла в правый нижний (то есть тем элементам A, для которых ij) присвоить значение 1, элементам, находящимся выше главной диагонали – значение 0, элементам, находящимся ниже главной диагонали – значение 2.
A = [] for i in range(3): for j in range(3): if i < j: A[i][j] = 0 elif i > j: A[i][j] = 2 else: A[i][j] = 1
File "test.py", line 9, in <module> A[i][j] = 1 IndexError: list index out of range
Офлайн
568
Imarden
Как и почему выходит за рамки массива понять не могу.
A = []
Офлайн
0
FishHook
for i in range(3): for j in range(3): if i < j: A[i][j] = 0 elif i > j: A[i][j] = 2 else: A[i][j] = 1
Отредактировано Imarden (Сен. 30, 2015 13:13:42)
Офлайн
6
Этот код присваивает значения в уже существующие ячейки матрицы.
Нужно вначале создать пустую матрицу, а затем заполнить её.
Например, вот так (тут матрица 3 на 3):
ncols = 3 nrows = 3 A = [[0] * ncols for i in range(nrows)] for i in range(ncols): for j in range(nrows): if i < j: A[i][j] = 0 elif i > j: A[i][j] = 2 else: A[i][j] = 1
for row in A: print row [1, 0, 0] [2, 1, 0] [2, 2, 1]
Отредактировано giveback (Сен. 30, 2015 14:04:49)
Офлайн
0
giveback
Спасибо!
То что внутри списка нужно создать еще пустой список я упустил.
Спасибо.
Офлайн