Python For Loop - Вопрос о втором цикле - PullRequest
0 голосов
/ 22 ноября 2018

Я только начинаю изучать, как кодировать на python, и я пытаюсь разобраться в понимании следующего кода:

import numpy as np
n=4 
matrix=np.zeros((n,n))  
for j in range (0,n):
  for i in range (n-1,n-j-2,-1):  
      matrix[i,j]=2*n-i-j-1 
print (matrix) 

Я был бы очень признателен, если бы кто-нибудь мог помочь мне понять, как выполняется каждая строкаи как код переоценивается с помощью цикла.Особенно, как я могу интерпретировать второй цикл "for" относительно "i" Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Не уверен, является ли 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)
0 голосов
/ 22 ноября 2018

Временно удалите матрицу, добавьте несколько операторов печати, и сам код расскажет вам, как работают циклы!

n=4
for j in range (0,n):
    for i in range (n-1,n-j-2,-1):
        print(j, i)
...