Как понять матрицы в Python?

Выведите таблицу размером n×n, заполненную числами от 1 до n2 (квадрат) по спирали, выходящей из левого верхнего угла и закрученной по часовой стрелке, как показано в примере (здесь n=5):
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

На второй день сдался и нашел решение в интернете, но ничего не понял, вот собственно сам код:
n = int(input())
i, j = 0, -1
max_j, max_i = n - 1, n - 1
min_j, min_i = 0, 1
count = 1
mtrx = [[0 for j in range(n)] for i in range(n)]
while True:
    
    while j < max_j:
        j += 1
        mtrx[i][j] = count
        count += 1
    max_j -= 1
    while i < max_i:
        i += 1
        mtrx[i][j] = count
        count += 1
    max_i -= 1
    while j > min_j:
        j -= 1
        mtrx[i][j] = count
        count += 1
    min_j += 1
    while i > min_i:
        i -= 1
        mtrx[i][j] = count
        count += 1
    min_i += 1
    
    if j == (n - 1) // 2 and i == n // 2:
        break
    
print()
print()
for i in range(n):
    for j in range(n):
        print(mtrx[i][j], end = ' ')
    print()

Прошу объяснить "суть" матриц в Пайтоне
  • Вопрос задан
  • 6391 просмотр
Пригласить эксперта
Ответы на вопрос 2
netpastor
@netpastor
Python developer
В питоне нет матриц, матрицы есть в математике
В питоне для работы с ними используют к примеру списки - как в твоем коде
mtrx = [[0 for j in range(n)] for i in range(n)]
Вот тут инициализируется список, хранящий в себе матрицу - список с вложенными списками внутри
В специальных пакетах типа Numpy и прочих возможно есть более заточенные под матрицы и операции с ними структуры
Ответ написан
Комментировать
@kashapovin
I started learning python in April 2022
Можно еще так:

def spiral(n):
dx,dy = 1,0
x,y = 0,0
myarray = [[None]* n for j in range(n)]
for i in range(1,n**2+1):
myarray[x][y] = i
nx,ny = x+dx, y+dy
if 0<=nx x,y = nx,ny
else:
dx,dy = -dy,dx
x,y = x+dx, y+dy
return myarray

def printspiral(myarray):
n = range(len(myarray))
for y in n:
for x in n:
print (myarray[x][y],end=' ')
print()

n = int(input())
printspiral(spiral(n))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы