在 Python 中进行双循环时将第一个循环追加和第二个循环追加分开

Separate the first loop append and the second loop append while doing double loop in Python

现在我正在尝试用双循环制作二维数组。

在我的代码中:

for t in range(0,150):
    for z in range(0,279):
            QC1 = QC[t,z,:,:]
            SUMQ =1000*np.mean(QC1)
            QRAIN1.append(SUMQ)
    print len(QRAIN1)
    QRAIN.append(QRAIN1)
    QR = np.array(QRAIN)

我想制作 150X279 数组,但结果不是,因为我认为在第一个循环的每一次 运行 中,结果都附加在 QRAIN1 中。

我想将 259 个数字列表的每个循环 运行 分开,并将它们累加到 QRAIN 中,得到 150x279 数组。

任何帮助或想法将不胜感激。

谢谢,

艾萨克

每次循环只创建一个新的空列表:

for t in range(0,150):
    QRAIN1 = []
    for z in range(0,279):
        QC1 = QC[t,z,:,:]
        SUMQ =1000*np.mean(QC1)
        QRAIN1.append(SUMQ)
    print len(QRAIN1)
    QRAIN.append(QRAIN1)
QR = np.array(QRAIN)

顺便说一句,每当您发现自己从一个空列表开始,然后在 for 循环中附加到它时,请考虑 列表理解 的时尚替代方案:

for t in range(150):
    QRAIN1 = [1000*np.mean(QC[t,z,:,:]) for z in range(279)]
    print len(QRAIN1)
    QRAIN.append(QRAIN1)
QR = np.array(QRAIN)

我还删除了 range 调用中多余的 0, -- 同样只是风格问题,但我喜欢 Tufte 的原则,"no wasted pixels":-)

当然,您也可以使用 嵌套 列表理解来构建所有 QRAIN,但我知道这开始有点牵强,而且 "middle way" 内部的 listcomp,外部的 for 循环,可能被认为更具可读性。无论如何,以防万一你想试试...:[=​​19=]

QRAIN = [ [1000*np.mean(QC[t,z,:,:]) for z in range(279)]
          for t in range(150) ]
QR = np.array(QRAIN)

这个没有 prints 但我怀疑你只是将它们用作调试辅助工具,所以它们的丢失应该不是一个大问题,我希望:-).