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

时间:2015-01-23 17:28:21

标签: 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)

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

我想将259个数字列表的每个循环运行分开并将它们累积到QRAIN产生的150x279数组。

任何帮助或想法都会非常感激。

谢谢,

艾萨克

1 个答案:

答案 0 :(得分:2)

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

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)

我还删除0,来电中的多余range - 再次只是风格问题,但我喜欢Tufte的原则,"没有浪费像素": - )

当然你也可以使用嵌套列表理解来构建所有QRAIN,但我知道这开始有点紧张,而且&# 34;中途"一个listcomp里面,一个for循环外部,可能被认为更具可读性。无论如何,以防你想尝试......:

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

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