为什么我不能按此顺序获得以下结果? [-2.0,-1.0,0.0,1.0,2.0] [-1.0,0.0,1.0,2.0,3.0] [-2.0,-1.0,0.0,1.0,2.0],而不是我在错误的地方得到第二个列表。 考虑到这种形式的输入数据,我能以更一致的方式编辑列表元素吗? 我的目标是在每个时间步骤更改初始列表(V),添加或减去txt文件中的输入值。
V = [1,2,3,4,5]
f = open('Qin.txt') # values in Qin.txt: 1, 3, 2
g = open('Qout.txt') # values in Qout.txt: 4, 5, 5
for line in f:
Z=float(line)
for line in g:
G=float(line)
c = []
for i in range(len(V)):
c.append(V[i]+Z-G)
print c
答案 0 :(得分:2)
OR:
V = [1,2,3,4,5]
f = open('Qin.txt') # values in Qin.txt: 1, 3, 2
fdata = f.readlines()
f.close()
g = open('Qout.txt') # values in Qout.txt: 4, 5, 5
gdata = g.readlines()
g.close()
output = [[v + float(x) - float(y) for v in V] for y in gdata for x in fdata]
print output
>>> [[-2.0, -1.0, 0.0, 1.0, 2.0], [-1.0, 0.0, 1.0, 2.0, 3.0], [-2.0, -1.0, 0.0, 1.0, 2.0]]
或者如果在另一种情况下(如果我误解了你的格式):
V = [1,2,3,4,5]
f = open('Qin.txt') # values in Qin.txt: 1, 3, 2
fdata = map(float, f.readlines())
f.close()
g = open('Qout.txt') # values in Qout.txt: 4, 5, 5
gdata = map(float, g.readlines())
g.close()
output = [[v+fdata[i]-y for v in V] for i,y in enumerate(gdata)]
或者如果你想在每一步修改V(注意它不会等于你问题中提到的结果,所以我的代码只是如何做的样本):
V = [1,2,3,4,5]
f = open('Qin.txt') # values in Qin.txt: 1, 3, 2
fdata = map(float, f.readlines())
f.close()
g = open('Qout.txt') # values in Qout.txt: 4, 5, 5
gdata = map(float, g.readlines())
g.close()
for i,y in enumerate(gdata):
for j,v in enumerate(V):
V[j] = v + fdata[i] - y
print V
答案 1 :(得分:1)
很难确切地说出当前算法出了什么问题,因为缩进似乎丢失了。但是我怀疑它与f中的每一行读取g中的每一行有关,当看起来你想要使用f中的第0行,g中的第0行和f中第1行的第1行,等
我认为这个算法会做你想要的......
V = [1,2,3,4,5]
f = open('Qin.txt') # values in Qin.txt: 1, 3, 2
g = open('Qout.txt') # values in Qout.txt: 4, 5, 5
fItems = []
for line in f:
fItems.append(float(line))
lineNum = 0
for line in g:
c = []
for i in range(len(V)):
c.append(V[i]+fItems[lineNum]-float(line))
print c
lineNum+=1
答案 2 :(得分:0)
首先,第四次访问f
时,您将无法再次获取1
,因为您已经读过所有数据一次。因此,在处理变量之前,您应该将数据读入变量f
和g
。如果您执行以下操作:
f = open('Qin.txt').readlines()
g = open('Qout.txt').readlines()
然后你会得到:
[-2.0, -1.0, 0.0, 1.0, 2.0]
[-3.0, -2.0, -1.0, 0.0, 1.0]
[-3.0, -2.0, -1.0, 0.0, 1.0]
[0.0, 1.0, 2.0, 3.0, 4.0]
[-1.0, 0.0, 1.0, 2.0, 3.0]
[-1.0, 0.0, 1.0, 2.0, 3.0]
[-1.0, 0.0, 1.0, 2.0, 3.0]
[-2.0, -1.0, 0.0, 1.0, 2.0]
[-2.0, -1.0, 0.0, 1.0, 2.0]
这些是您从上面指定的计算中得到的结果。