Не уверен, является ли StackOverflow подходящей платформой для объяснения кода.В любом случае ...
Я изменил внутренний цикл for, чтобы его было проще понять
import numpy as np
n=4
Создать матрицу n * n
matrix=np.zeros((n,n))
Для каждого столбца вmatrix
for j in range (0,n):
Для каждой строки в j-м столбце, но от nj-1 до n-1
ПРИМЕЧАНИЕ. В исходном примере -1
в конце указывает обратный порядок.Я изменил порядок петель и удалил -1
в конце, чтобы получить тот же результат.Пожалуйста, проверьте, чтобы подтвердить
nj-1: Это следует понимать на примерах.Для j==0
значение равно n-1
-> Последняя строка.Для последнего столбца j==n-1
значение равно 0 -> Первая строка.Таким образом, для каждого столбца, начиная с последнего ряда, мы переходим по диагонали вверх к первому ряду.
Просто логика / уравнение для перемещения по диагонали вверх.
ПРИМЕЧАНИЕ. Это только начальная точкадля каждого столбца.
n - 1: последняя строка (хотя второе число равно n, вызов range(0, x)
или range (x)
расширяется с 0
до x - 1
. Очень похоже на индексирование массива)
for i in range (n-j-1, n):
matrix[i,j]=2*n-i-j-1
print (matrix)