在python中添加循环条件中的列表时出错

2024-06-26 13:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

while dir_loop_water < water_lenth:

    ds_water = gdal.Open('path'+ dirlist_water[dir_loop_water] , gdal.GA_ReadOnly)
    numer_of_band_water = str(ds_water.RasterCount)
    if numer_of_band_water == '3':
        print('water condition matched')
        rb_water = ds_water.GetRasterBand(1)
        band1_water_tmp = rb_water.ReadAsArray()
        band1_water = band1_water_tmp.tolist()

        rb2_water = ds_water.GetRasterBand(2)
        band2_water_tmp = rb2_water.ReadAsArray()
        band2_water = band2_water_tmp.tolist()

        rb3_water = ds_water.GetRasterBand(3)
        band3_water_tmp = rb3_water.ReadAsArray()
        band3_water = band3_water_tmp.tolist()

        [cols_water,rows_water] = band1_water_tmp.shape
        loop_water_cols = 0

        while loop_water_cols < cols_water:

            loop_water_rows = 0

            while loop_water_rows < rows_water:


                dataset.append([band1_water[loop_water_cols][loop_water_rows],band2_water[loop_water_cols][loop_water_rows],band3_water[loop_water_cols][loop_water_rows],0])

                loop_water_rows = loop_water_rows +1
            del dataset[0]
            with open('path/dataset.csv', 'a') as f:
                    writer = csv.writer(f)
                    writer.writerows(dataset)
                    f.close()
            dataset= [None]
            loop_water_cols = loop_water_cols +1
    dir_loop_water= dir_loop_water+1

通过上面的代码,我想将长度为4的列表添加到dataset中。你知道吗

但是我打印数据集的值(print(dataset[number]),它是这样打印的。你知道吗

[0.02672404982149601, 0.003426517592743039, 28.19584846496582, 0]
[0.02675003558397293, 0.00344488094560802, 28.192949295043945, 0]

在我对上述代码的看法中,我添加了一个包含四个值的列表。你知道吗

但是,结果是两个具有四个值的列表的组合。你知道吗

我找不到该列表的合并位置。你知道吗

感谢您让我知道如何一次只添加一个具有4个值的列表。你知道吗


Tags: loop列表dirdsdatasettmprowscols
1条回答
网友
1楼 · 发布于 2024-06-26 13:35:27

你的数据集.append()方法将整个列表追加到列表中(生成列表列表列表)。你知道吗

要将新列表的每一项附加到数据集中(如果我理解正确的话),请使用+=如下所示:

dataset += [band1_water[loop_water_cols][loop_water_rows],band2_water[loop_water_cols][loop_water_rows],band3_water[loop_water_cols][loop_water_rows],0]

这将产生如下列表:

[0.02672404982149601, 0.003426517592743039, 28.19584846496582, 0, 0.02675003558397293, 0.00344488094560802, 28.192949295043945, 0]

相关问题 更多 >