我才刚刚开始学习如何使用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)
如果有人可以帮助我理解每一行的执行方式以及如何通过循环重新评估代码,我将不胜感激。特别是我该如何解释关于“ i”的第二个“ for”循环 预先感谢!
答案 0 :(得分:0)
暂时删除矩阵内容,添加一些打印语句,然后代码本身将告诉您循环的工作原理!
n=4
for j in range (0,n):
for i in range (n-1,n-j-2,-1):
print(j, i)
答案 1 :(得分:0)
不确定StackOverflow是否是解释代码的正确平台。反正...
我更改了内部的for循环以使其易于理解
import numpy as np
n=4
matrix=np.zeros((n,n))
for j in range (0,n):
注意:
在原始示例中,末尾的-1
表示相反的顺序。我颠倒了循环顺序,并在最后删除了-1
,以产生相同的输出。请检查确认
n-j-1:这应该通过示例来理解。对于j==0
,值是n-1
->最后一行。
对于最后一列j==n-1
,该值为0->第一行。因此,对于每一列,从最后一行开始,我们对角向上进行到第一行。
简单地将逻辑/等式向上倾斜。
注意:这只是每一列的起点。
n-1:最后一行(尽管第二个数字为n,调用range(0, x)
或range (x)
从0
扩展到x - 1
。很像数组索引) / p>
for i in range (n-j-1, n):
matrix[i,j]=2*n-i-j-1
print (matrix)