for循环求和中的for循环正在覆盖数据值python

Posted

技术标签:

【中文标题】for循环求和中的for循环正在覆盖数据值python【英文标题】:for loop in for loop sumation is overwriting data values python 【发布时间】:2019-05-06 20:39:09 【问题描述】:

我有一个关于我的实验数据评估代码的问题: 在第一个 for 循环中,我打开一个又一个要分析的文件。在这个for循环中,所以在一个文件中,我想创建第二个for循环来评估一些特定的参数进行评估。当我只为一个文件执行此操作时,参数是正确的,但是当我遍历所有文件时,看起来在第二个 for 循环中这些参数被总结了。所以正常值应该在 ar= 0.0001 的范围内,因为一个文件可以正常工作。当我遍历文件时,第一个得到 0.0001,第二个得到 0.0002,第三个得到 0.0003,依此类推。

更新: 好的,这是代码的全部部分。对于我想要的每个文件,在拟合数据以获得文件内第一列 (x[j]) 中的两个数据点之间的差异的总和乘以第二列中的对应值 (y[j]) (每个文件有两列,长度为 720 个数据点),然后应将结果存储在每个文件的 AR 中。

def sum_list(l):
  sum = 0
  for k in l:
     sum += k
  return sum

INV= []
DIFFS= []
AR= []

for i in range(0,len(fnames)):

data= np.loadtxt(fnames[i])
x= data[:,0]
y=data[:,1]




gmod=lm.Model(linmod)
result= gmod.fit(y, x=x, p=0.003, bg=0.001)
plt.plot(x, y)
plt.plot(x, result.best_fit, 'r-')
plt.show()             

print result.best_values['bg']

print result.best_values['p']
p= result.best_values['p']
bg1= result.best_values['bg']                    


for j in range(0, 719):
    diffs = ((x[j+1]- x[j])*y[j])
    DIFFS.append(diffs)

ar= sum_list(DIFFS)
AR.append(ar)


inr= (x[0]-bg1)*(y[0]**3)/3 + ar
INV[i]= inr

【问题讨论】:

什么是DIFFS1x 是什么? y 是什么? diffs 是什么?请提供minimal reproducible example 这里还是没有提供相关部分的代码。如果问题出在diffs 的求和结果上,我们需要查看与diffs 相关的所有代码。 我现在在新评论中提供了它;) 【参考方案1】:

如果你正在处理文件(例如打开它们),我建议使用 os 模块,也许这样的结构可以帮助你避免嵌套的 for 循环:

for root,dirs,files in os.walk(os.getcwd()):
    for i in files:
      with open(os.path.join(root,i)) as f:
              #do your summation 

【讨论】:

以上是关于for循环求和中的for循环正在覆盖数据值python的主要内容,如果未能解决你的问题,请参考以下文章

For..In 循环覆盖所有数组值

使用 Javascript 使用 for 循环对数组中的数字求和 [重复]

Swift 中的核心数据:仅在 for 循环中保存最后一个对象

为啥我的 for 循环覆盖而不是追加?

如何使用 Python 中的 for 循环用回车覆盖一行?

for循环语句求和