簡體   English   中英

如何將以下 if 語句轉換為更有效的嵌套 for 循環

[英]How do I turn the following if statements into a more efficient nested for loops

我有以下代碼,我的目標是在 python 中填充一個 10x48 數組。 然而,數據取決於一個數據集,該數據集應該在數組中的特定位置。 因此,我一直在為每個計算節點使用 if 語句到 plot 它,但我想知道如何使用嵌套的 for 循環在代碼和 memory 中使其更快。

有 48 列和 10 行。

  • 每個計算節點的第一行需要在范圍內計算 1-1-0 計算 1-1-1 計算 1-1-2 計算 1-1-3 計算 1-2-0 一直到 1-12 -3
  • 下一行將具有相同的中間值,但最后一位現在將使用數字 4 5 6 和 7,因此例如它將變為計算 1-1-4 計算 1-1-5 計算 1-1-6 計算1-1-7 一直計算 1-2-4 直到 1-12-7

這將持續到最后一行,最后一個數字將在 36 37 38 和 39 之間旋轉

所以計算 1-1-36 計算 1-1-37 計算 1-1-38 計算 1-1-39 計算 1-2-36 一直到 1-12-39

以下代碼代表我開始的 if 語句,但需要一種更有效的方法,以便我可以保存 memory 並擺脫我在復制和粘貼時可能犯的任何錯誤。

temp = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
for i in linesAtTime:
    if i[0] == "compute-1-1-0.localdomain":
        temp[0][0]=float(i[4])
    elif i[0] == "compute-1-1-1.localdomain":
        temp[0][1] = float(i[4])
    elif i[0] == "compute-1-1-2.localdomain":
        temp[0][2] = float(i[4])
    elif i[0] == "compute-1-1-3.localdomain":
        temp[0][3] = float(i[4])
    elif i[0] == "compute-1-2-0.localdomain":
        temp[0][4] = float(i[4])
    elif i[0] == "compute-1-2-1.localdomain":
        temp[0][5] = float(i[4])
    elif i[0] == "compute-1-2-2.localdomain":
        temp[0][6] = float(i[4])
    elif i[0] == "compute-1-2-3.localdomain":
        temp[0][7] = float(i[4])
    elif i[0] == "compute-1-3-0.localdomain":
        temp[0][8] = float(i[4])
    elif i[0] == "compute-1-3-1.localdomain":
        temp[0][9] = float(i[4])
    elif i[0] == "compute-1-3-2.localdomain":
        temp[0][10] = float(i[4])
    elif i[0] == "compute-1-3-3.localdomain":
        temp[0][11] = float(i[4])
    elif i[0] == "compute-1-4-0.localdomain":
        temp[0][12] = float(i[4])
    elif i[0] == "compute-1-4-1.localdomain":
        temp[0][13] = float(i[4])
    elif i[0] == "compute-1-4-2.localdomain":
        temp[0][14] = float(i[4])
    elif i[0] == "compute-1-4-3.localdomain":
        temp[0][15] = float(i[4])
    elif i[0] == "compute-1-5-0.localdomain":
        temp[0][16] = float(i[4])
    elif i[0] == "compute-1-5-1.localdomain":
        temp[0][17] = float(i[4])
    elif i[0] == "compute-1-5-2.localdomain":
        temp[0][18] = float(i[4])
    elif i[0] == "compute-1-5-3.localdomain":
        temp[0][19] = float(i[4])
    elif i[0] == "compute-1-6-0.localdomain":
        temp[0][20] = float(i[4])
    elif i[0] == "compute-1-6-1.localdomain":
        temp[0][21] = float(i[4])
    elif i[0] == "compute-1-6-2.localdomain":
        temp[0][22] = float(i[4])
    elif i[0] == "compute-1-6-3.localdomain":
        temp[0][23] = float(i[4])
    elif i[0] == "compute-1-7-0.localdomain":
        temp[0][24] = float(i[4])
    elif i[0] == "compute-1-7-1.localdomain":
        temp[0][25] = float(i[4])
    elif i[0] == "compute-1-7-2.localdomain":
        temp[0][26] = float(i[4])
    elif i[0] == "compute-1-7-3.localdomain":
        temp[0][27] = float(i[4])
    elif i[0] == "compute-1-8-0.localdomain":
        temp[0][28] = float(i[4])
    elif i[0] == "compute-1-8-1.localdomain":
        temp[0][29] = float(i[4])
    elif i[0] == "compute-1-8-2.localdomain":
        temp[0][30] = float(i[4])
    elif i[0] == "compute-1-8-3.localdomain":
        temp[0][31] = float(i[4])
    elif i[0] == "compute-1-9-0.localdomain":
        temp[0][32] = float(i[4])
    elif i[0] == "compute-1-9-1.localdomain":
        temp[0][33] = float(i[4])
    elif i[0] == "compute-1-9-2.localdomain":
        temp[0][34] = float(i[4])
    elif i[0] == "compute-1-9-3.localdomain":
        temp[0][35] = float(i[4])
    elif i[0] == "compute-1-10-0.localdomain":
        temp[0][36] = float(i[4])
    elif i[0] == "compute-1-10-1.localdomain":
        temp[0][37] = float(i[4])
    elif i[0] == "compute-1-10-2.localdomain":
        temp[0][38] = float(i[4])
    elif i[0] == "compute-1-10-3.localdomain":
        temp[0][39] = float(i[4])
    elif i[0] == "compute-1-11-0.localdomain":
        temp[0][40] = float(i[4])
    elif i[0] == "compute-1-11-0.localdomain":
        temp[0][41] = float(i[4])
    elif i[0] == "compute-1-11-1.localdomain":
        temp[0][42] = float(i[4])
    elif i[0] == "compute-1-11-2.localdomain":
        temp[0][43] = float(i[4])
    elif i[0] == "compute-1-11-3.localdomain":
        temp[0][44] = float(i[4])
    elif i[0] == "compute-1-12-0.localdomain":
        temp[0][45] = float(i[4])
    elif i[0] == "compute-1-12-1.localdomain":
        temp[0][46] = float(i[4])
    elif i[0] == "compute-1-12-2.localdomain":
        temp[0][47] = float(i[4])
    elif i[0] == "compute-1-12-3.localdomain":
        temp[0][48] = float(i[4])


    elif i[0] == "compute-1-1-4.localdomain":
        temp[1][0]=float(i[4])
    elif i[0] == "compute-1-1-5.localdomain":
        temp[1][1] = float(i[4])
    elif i[0] == "compute-1-1-6.localdomain":
        temp[1][2] = float(i[4])
    elif i[0] == "compute-1-1-7.localdomain":
        temp[1][3] = float(i[4])
    elif i[0] == "compute-1-2-4.localdomain":
        temp[1][4] = float(i[4])
    elif i[0] == "compute-1-2-5.localdomain":
        temp[1][5] = float(i[4])
    elif i[0] == "compute-1-2-6.localdomain":
        temp[1][6] = float(i[4])
    elif i[0] == "compute-1-2-7.localdomain":
        temp[1][7] = float(i[4])
    elif i[0] == "compute-1-3-4.localdomain":
        temp[1][8] = float(i[4])
    elif i[0] == "compute-1-3-5.localdomain":
        temp[1][9] = float(i[4])
    elif i[0] == "compute-1-3-6.localdomain":
        temp[1][10] = float(i[4])
    elif i[0] == "compute-1-3-7.localdomain":
        temp[1][11] = float(i[4])
    elif i[0] == "compute-1-4-4.localdomain":
        temp[1][12] = float(i[4])
    elif i[0] == "compute-1-4-5.localdomain":
        temp[1][13] = float(i[4])
    elif i[0] == "compute-1-4-6.localdomain":
        temp[1][14] = float(i[4])
    elif i[0] == "compute-1-4-7.localdomain":
        temp[1][15] = float(i[4])
    elif i[0] == "compute-1-5-4.localdomain":
        temp[1][16] = float(i[4])
    elif i[0] == "compute-1-5-5.localdomain":
        temp[1][17] = float(i[4])
    elif i[0] == "compute-1-5-6.localdomain":
        temp[1][18] = float(i[4])
    elif i[0] == "compute-1-5-7.localdomain":
        temp[1][19] = float(i[4])
    elif i[0] == "compute-1-6-4.localdomain":
        temp[1][20] = float(i[4])
    elif i[0] == "compute-1-6-5.localdomain":
        temp[1][21] = float(i[4])
    elif i[0] == "compute-1-6-6.localdomain":
        temp[1][22] = float(i[4])
    elif i[0] == "compute-1-6-7.localdomain":
        temp[1][23] = float(i[4])
    elif i[0] == "compute-1-7-4.localdomain":
        temp[1][24] = float(i[4])
    elif i[0] == "compute-1-7-5.localdomain":
        temp[1][25] = float(i[4])
    elif i[0] == "compute-1-7-6.localdomain":
        temp[1][26] = float(i[4])
    elif i[0] == "compute-1-7-7.localdomain":
        temp[1][27] = float(i[4])
    elif i[0] == "compute-1-8-4.localdomain":
        temp[1][28] = float(i[4])
    elif i[0] == "compute-1-8-5.localdomain":
        temp[1][29] = float(i[4])
    elif i[0] == "compute-1-8-6.localdomain":
        temp[1][30] = float(i[4])
    elif i[0] == "compute-1-8-7.localdomain":
        temp[1][31] = float(i[4])
    elif i[0] == "compute-1-9-4.localdomain":
        temp[1][32] = float(i[4])
    elif i[0] == "compute-1-9-5.localdomain":
        temp[1][33] = float(i[4])
    elif i[0] == "compute-1-9-6.localdomain":
        temp[1][34] = float(i[4])
    elif i[0] == "compute-1-9-7.localdomain":
        temp[1][35] = float(i[4])
    elif i[0] == "compute-1-10-4.localdomain":
        temp[1][36] = float(i[4])
    elif i[0] == "compute-1-10-5.localdomain":
        temp[1][37] = float(i[4])
    elif i[0] == "compute-1-10-6.localdomain":
        temp[1][38] = float(i[4])
    elif i[0] == "compute-1-10-7.localdomain":
        temp[1][39] = float(i[4])
    elif i[0] == "compute-1-11-4.localdomain":
        temp[1][40] = float(i[4])
    elif i[0] == "compute-1-11-5.localdomain":
        temp[1][41] = float(i[4])
    elif i[0] == "compute-1-11-6.localdomain":
        temp[1][42] = float(i[4])
    elif i[0] == "compute-1-11-7.localdomain":
        temp[1][43] = float(i[4])
    elif i[0] == "compute-1-11-4.localdomain":
        temp[1][44] = float(i[4])
    elif i[0] == "compute-1-12-5.localdomain":
        temp[1][45] = float(i[4])
    elif i[0] == "compute-1-12-6.localdomain":
        temp[1][46] = float(i[4])
    elif i[0] == "compute-1-12-7.localdomain":
        temp[1][47] = float(i[4])
    elif i[0] == "compute-1-12-3.localdomain":
        temp[1][48] = float(i[4])

我附上了我的計划的偽插圖

我建議先對數據進行排序,然后再填充數組。 您必須編寫自己的排序方法,因為直接字符串比較不會給您一個好的順序。

這太草率了,因為我根本無法運行或測試它,但你可以嘗試這樣的事情。

def main():

    # ...

    number_of_rows = 12
    number_of_columns = 48

    temp = [[0] * number_of_columns for _ in range(number_of_rows)]

    lookup = {}

    for row in range(number_of_rows):
        for column in range(number_of_columns):
            key = "compute-{}-{}-{}.localdomain".format(1, (column // 4) + 1, (column % 4) + (row * 4))
            value = row, column
            lookup.update(key, value)

    for i in lines_at_time:
        row, column = lookup[i[0]]
        temp[row][column] = float(i[4])

    return 0


if __name__ == "__main__":
    import sys
    sys.exit(main())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM