【问题标题】:Python For Loop - Question about second loopPython For Loop - 关于第二个循环的问题
【发布时间】:2018-11-22 01:03:30
【问题描述】:

我刚刚开始学习如何在 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”循环 提前致谢!

【问题讨论】:

    标签: python python-2.7 loops for-loop


    【解决方案1】:

    暂时去掉矩阵的东西,添加一些打印语句,代码本身就会告诉你循环是如何工作的!

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

    【讨论】:

      【解决方案2】:

      不确定 StackOverflow 是否是解释代码的正确平台。总之……

      我更改了内部 for 循环以使其易于理解

      import numpy as np
      n=4 
      

      创建一个 n*n 矩阵

      matrix=np.zeros((n,n))  
      

      对于矩阵中的每一列

      for j in range (0,n):
      

      对于第 j 列中的每一行,但从 n-j-1 到 n-1

      注意: 在原始示例中,末尾的-1 表示相反的顺序。我颠倒了循环顺序并在最后删除了-1,以产生相同的输出。请检查确认

      n-j-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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-06
        • 1970-01-01
        • 1970-01-01
        • 2021-04-25
        • 1970-01-01
        • 2011-01-26
        相关资源
        最近更新 更多