【问题标题】:How to do nested loop in python如何在python中进行嵌套循环
【发布时间】:2018-07-27 02:49:11
【问题描述】:

我想在我的编程中做嵌套循环。然而,这段代码并没有达到我的预期。

X=[0,1,1,1,0]

length=len(X)
for i,val in enumerate(X):
    a=0
    count=0
    while (count<length):
        a=15+a
        print (a)
        HWPQ=np.matrix([[1, 0, 0, 0], [0, math.cos(4*math.radians(a)), 
        math.sin(4*math.radians(a)), 0], [0, math.sin(4 * math.radians(a)), - 
        math.cos(4 * math.radians(a)), 0], [0, 0, 0, -1]])
        result=HWPQ*val
        print (result)
        count=count +1
    print ("\n")

假设,在这个程序中,我想使用循环更新每个元素的a 的值。例如:

X=0 for a=0
X=1 for a=15
X=1 for a=30
X=1 for a=45
X=0 for a=60

结果应该是,我手动计算的:

[[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]
[[ 1.         0.         0.         0.       ]
 [ 0.         0.5        0.8660254  0.       ]
 [ 0.         0.8660254 -0.5        0.       ]
 [ 0.         0.         0.        -1.       ]]
[[ 1.         0.         0.         0.       ]
 [ 0.        -0.5        0.8660254  0.       ]
 [ 0.         0.8660254  0.5        0.       ]
 [ 0.         0.         0.        -1.       ]]
[[  1.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00]
 [  0.00000000e+00  -1.00000000e+00   1.22464680e-16   0.00000000e+00]
 [  0.00000000e+00   1.22464680e-16   1.00000000e+00   0.00000000e+00]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00  -1.00000000e+00]]
 [[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]

【问题讨论】:

  • 这段代码中使用了什么X?好像没用? a 只是一个算术级数,忽略 X 的任何值
  • 最后一个正确吗?您将矩阵乘以 val,即 0,因此整个矩阵将为 0s。
  • @我惊动了外星人。你是对的。我已经更新了最后的输出。
  • @atline。 X 的值表示为位 0 或 1 的列表。
  • 是的,我错过了,没关系。

标签: python numpy nested-loops


【解决方案1】:

您的代码中似乎有大量不必要的变量,例如countXi。删除它们并使用标准的for 循环,您会得到:

X=[0,1,1,1,0]
a=0
for val in X:
    print (a)
    HWPQ=np.matrix([
        [1, 0, 0, 0], 
        [0, math.cos(4*math.radians(a)), math.sin(4*math.radians(a)), 0], 
        [0, math.sin(4 * math.radians(a)), - math.cos(4 * math.radians(a)), 0],
        [0, 0, 0, -1]])
    result=HWPQ*val
    print (result)
    a=15+a
    print ("\n")

创建你想要的输出。

0
[[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]


15
[[ 1.         0.         0.         0.       ]
 [ 0.         0.5        0.8660254  0.       ]
 [ 0.         0.8660254 -0.5        0.       ]
 [ 0.         0.         0.        -1.       ]]


30
[[ 1.         0.         0.         0.       ]
 [ 0.        -0.5        0.8660254  0.       ]
 [ 0.         0.8660254  0.5        0.       ]
 [ 0.         0.         0.        -1.       ]]


45
[[  1.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00]
 [  0.00000000e+00  -1.00000000e+00   1.22464680e-16   0.00000000e+00]
 [  0.00000000e+00   1.22464680e-16   1.00000000e+00   0.00000000e+00]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00  -1.00000000e+00]]


60
[[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]

【讨论】:

    猜你喜欢
    • 2021-09-26
    • 2020-12-05
    • 1970-01-01
    • 2017-09-01
    • 2020-12-12
    • 1970-01-01
    • 2019-07-28
    • 2019-04-21
    • 2015-12-31
    相关资源
    最近更新 更多