Python 2D массив — список вне диапазона (матрица)

#python #arrays #list #multidimensional-array

#python #массивы #Список #многомерный-массив

Вопрос:

Привет !

Я новичок в Python, и я написал скрипт для выполнения умножения матриц. Когда я тестирую матрицу с другим количеством строк и столбцов, я получаю ошибку IndexError

Ошибка IndexError: индекс назначения списка вне диапазона

Я обнаружил, что люди уже спрашивали об этой теме, и я просмотрел все комментарии и ответы, но я все еще не понимаю, в чем проблема в моем скрипте.

В моем скрипте я использую форматирование печати для печати входных данных в определенных местах. Я использовал константы H и L для размещения печати каждого элемента.

 import os

os.system('cls' if os.name == 'nt' else 'clear')

H = 2 L = 6

A_nbColumns = 8 
A_nbLines = 8

while A_nbColumns > 7:
    A_nbColumns = int(input("Enter a column number for matrix A, max 7 ........ "))

while A_nbLines > 7:
    A_nbLines = int(input("Enter a line number for matrix A, max 7 .......... "))

os.system('cls' if os.name == 'nt' else 'clear')

A = [[0 for x in range(A_nbColumns)] for y in range(A_nbLines)]

for y in range(len(A)):
    for x in range(len(A[y])):
        print(f"33[{(y * H   1 )};{ x * L   1 }H.")

for y in range(len(A)):
    for x in range(len(A[y])):
        A[x][y] = float(input(f"33[{(y * H   1 )};{ x * L   1 }H"))
  

Пожалуйста, кто-нибудь может мне помочь?

Заранее благодарю вас

С наилучшими пожеланиями

Матье

Комментарии:

1. A[y][x] вместо A[x][y] ? Т.е. переключите индексы.

2. Большое вам спасибо @Timus.

3. Я даже не знаю, как классифицировать вопрос как решаемый 🙂

4. В ваших циклах for вы используете y для первого измерения и x для второго измерения. Поэтому при индексации вы должны использовать тот же порядок, то есть использовать A[y][x] .

5. Спасибо @darcamo, действительно, если массив имеет вид tab [i] [j], я буду представлять строки, следовательно, вертикальную ось, в то время как j будет представлять столбцы и горизонтальную ось. Я часто путаюсь, потому что сначала думаю в координатах, поэтому x для горизонтальной оси и y для вертикальной оси. Спасибо за вашу помощь.