如何用Python将变量maxi的所有值存入列表?代码问题排查
解决列表仅存储最后一个maxi值的问题
嘿,我一下子就找到你代码里的问题啦!
你看,你把列表初始化的代码c = []放在了for循环的内部——这就意味着每一次循环开始的时候,程序都会重新创建一个空的列表c,之前循环里添加的maxi值直接就被覆盖掉了,最后自然只能看到最后一次循环的那个maxi值。
修正后的代码
只需要把列表c的初始化移到for循环外面就行,这样整个循环过程中列表只会被创建一次,每次计算出的maxi都能顺利追加进去:
import numpy as np import re import gdal import ogr from osgeo import gdal_array from gdalconst import * import os import osr import shutil import h5py import subprocess import operator indir = '/home/vigna/Documents/LST_29_03' directory=os.fsencode(indir) e=1 # 把列表初始化移到循环外面! c = [] for file in os.listdir(directory): file1=os.fsdecode(file) if '_Gadchiroli' in file1: b=str(e)+'_Gadchiroli.tif' gadchiroli=gdal.Open(b,GA_ReadOnly) gad_arry=gadchiroli.ReadAsArray() maxi=np.amax(gad_arry) c.append(maxi) e+=1 print(c)
另外补充一句:你一开始用的c.append(maxi)是完全正确的选择,extend是用来把另一个可迭代对象(比如列表、元组)里的元素逐个添加进来的,这里maxi是单个数值,用append就够了,问题根本不在这两个方法上哦~
内容的提问来源于stack exchange,提问作者vigna purohit
相关产品推荐
相关产品推荐

