在Python中执行双循环时,分离第一个循环附加和第二个循环附加

在Python中执行双循环时,分离第一个循环附加和第二个循环附加,python,arrays,loops,Python,Arrays,Loops,现在我正在尝试用双循环制作二维数组 在我的代码中: 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) 我想创

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

在我的代码中:

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数组中

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

谢谢,


Isaac

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

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)

BTW,任何时候你发现自己从一个空列表开始,然后在<<代码>中附加到Road,考虑一个“强>列表理解< /强>:

的时髦替代方案。
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)
我还删除了
范围内的
调用中多余的
0,
——同样只是风格问题,但我喜欢Tufte的原则,“没有浪费的像素”:-)

当然,您也可以使用嵌套的列表理解来构建所有的
QRAIN
,但我知道这已经开始有点牵强了,而内部的listcomp的“中间方式”,外部的
循环,可能会被认为更具可读性。无论如何,以防万一你想试试…:

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

这一个没有
打印
s,但我怀疑您只是将它们用作调试辅助工具,因此它们的丢失应该不是什么大问题,我希望:-)。

谢谢Alex!我没有抓住那一点。我会尝试你的建议。