Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » Элементы выше главной диагонали – это элементы A[i][j], для которых i<j, а для элементов ниже главной диагонали i>j [RSS Feed]

#1 Сен. 30, 2015 13:00:00

Imarden
Зарегистрирован: 2015-02-20
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Элементы выше главной диагонали – это элементы A[i][j], для которых i<j, а для элементов ниже главной диагонали i>j

Добрый день!
Необходимо элементам, находящимся на главной диагонали, проходящей из левого верхнего угла в правый нижний (то есть тем элементам 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
Как и почему выходит за рамки массива понять не могу.

Офлайн

#2 Сен. 30, 2015 13:04:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Элементы выше главной диагонали – это элементы A[i][j], для которых i<j, а для элементов ниже главной диагонали i>j

Imarden
Как и почему выходит за рамки массива понять не могу.
A = []
Матрица вообще пустая, в ней нет элементов. Что вы рассчитываете получить обращаясь к несуществующим ячейкам?



Офлайн

#3 Сен. 30, 2015 13:12:36

Imarden
Зарегистрирован: 2015-02-20
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Элементы выше главной диагонали – это элементы A[i][j], для которых i<j, а для элементов ниже главной диагонали i>j

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)

Офлайн

#4 Сен. 30, 2015 14:00:59

giveback
Зарегистрирован: 2015-05-03
Сообщения: 36
Репутация: +  6  -
Профиль   Отправить e-mail  

Элементы выше главной диагонали – это элементы A[i][j], для которых i<j, а для элементов ниже главной диагонали i>j

Этот код присваивает значения в уже существующие ячейки матрицы.
Нужно вначале создать пустую матрицу, а затем заполнить её.
Например, вот так (тут матрица 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)

Офлайн

#5 Сен. 30, 2015 14:07:40

Imarden
Зарегистрирован: 2015-02-20
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Элементы выше главной диагонали – это элементы A[i][j], для которых i<j, а для элементов ниже главной диагонали i>j

giveback
Спасибо!
То что внутри списка нужно создать еще пустой список я упустил.
Спасибо.

Офлайн

  • Начало
  • » Python для новичков
  • » Элементы выше главной диагонали – это элементы A[i][j], для которых i<j, а для элементов ниже главной диагонали i>j[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version