我是 Python 和一般编程新手。虽然我认为这个问题可能与我使用异常处理有关,但也可能是由于普遍缺乏理解!
for i in range(0, len(dates)):
try:
data.append(WUF.getwx(location[j], dates[i])[1])
continue
except xml.etree.ElementTree.ParseError:
#copy last good row of data and use it for the missing day
fixdata = data[-1] #[1,2,3,4,5,6,7,8,9,10,11]
fixdata[10] = 'estimated'
data.append(fixdata)
当我按照编写的方式运行代码时,我在 data
中得到 2 行“估计”行。一个用于前一个日期,一个用于估计的日期。如果我将 fixdata
变量更改为 [1, 2, 3, 4, 5, ...]
,则只有一行(预计日期的预期行)是“估计”。
知道我在这里缺少什么吗?谢谢!
最佳答案
问题所在:
fixdata = data[-1]
这实际上并不复制数据,它仅复制数据的引用。 fixdata
最终指向列表中的原始元素,因此当您这样做时
fixdata[10] = 'estimated'
它改变了原始数据。
要实际复制数据,请尝试以下操作:
fixdata = data[-1][:]
[:]
复制整个列表,我认为这就是您想要做的。
关于Python for 循环内的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933669/