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
【问题讨论】:
什么是DIFFS1
? x
是什么? 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的主要内容,如果未能解决你的问题,请参考以下文章
使用 Javascript 使用 for 循环对数组中的数字求和 [重复]