【问题标题】:How to get inner for-loop to run all the way through before moving onto next increment of outer loop?在进入下一个外部循环增量之前,如何让内部 for 循环一直运行?
【发布时间】:2020-08-15 11:57:03
【问题描述】:

我正在使我为 uni 项目编写的程序更广泛,在我使用 3x3 矩阵之前,但现在它是一个 15 x 15 矩阵,我想创建一个 for 循环来填充值,而不是比我目前拥有的。我已经使这个示例代码更小了,但这是我想要放入 for 循环的内容:

distance_matrix=
[array1[0]-array2[0], array1[1]-array2[0], array1[2]-array2[0], array1[3]-array2[0],array1[4]-array2[0]],
[array1[0]-array2[1], array1[1]-array2[1], array1[2]-array2[1], array1[3]-array2[1],array1[4]-array2[1]],
[array1[0]-array2[2], array1[1]-array2[2], array1[2]-array2[2], array1[3]-array2[2],array1[4]-array2[2]],
[array1[0]-array2[3], array1[1]-array2[3], array1[2]-array2[3], array1[3]-array2[3],array1[4]-array2[3]],
[array1[0]-array2[4], array1[1]-array2[4], array1[2]-array2[4], array1[3]-array2[4],array1[4]-array2[4]]                

所以这是一个 5x5 矩阵。如您所见,每个条目的值是 2 个数组中的值之间的差异。我首先想到的是循环这是一个 2 层嵌套的 for 循环,但它只生成了一个 5x1 矩阵,对角线上的值是 (i,i) 值。它看起来像这样:

distance_matrix=[[0 for x in range(0,5)] for y in range(0,5)]
for i range(0,5):
    for j in range(0,5):
        distance_matrix[i][j]=array1[i]-array2[j]

然后我尝试了一个 if 语句,只是一个我可以重塑的列表,并设置在外循环中的行上保持不变的值,但这再次生成了一个长度为 5 的列表(我真的不知道找出原因):

distance_matrix_list=[]
    for col_val in range(0,5):
        first_value=array1[col_val]
        for row_val in range(0,5)):
            if row_val<5):
                distance_matrix_list.append([first_value-array2[row_val]])
        
        distance_matrix=np.array(distance_matrix_list)
        distance_matrix.reshape((5,5))

这一定很明显,我很沮丧,因为我错过了这一点。请帮忙!

【问题讨论】:

    标签: python for-loop iteration


    【解决方案1】:

    您的第一个代码 sn-p,除了一些拼写错误之外应该可以正常工作。但是,在分配索引时,您确实需要切换 i 和 j。这对我来说很好:

    distance_matrix=[[0 for x in range(5)] for y in range(5)]
    for i in range(5):
        for j in range(5):
            distance_matrix[i][j] = array1[j] - array2[i]
    

    【讨论】:

    • 非常感谢!一些索引拼写错误和缩进错误意味着我没有得到它。知道这实际上是正确的,让我能够正确地看到正在发生的事情。谢谢!
    • 如果这有帮助,如果您将答案标记为正确,我将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2014-12-12
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    相关资源
    最近更新 更多