从文件中解析线性系统

时间:2017-10-14 19:41:56

标签: python list

在文本文件中,我输入一个包含3个方程的线性系统。 (例如:a1x + b1y + c1z = r1,a2x + b2y + c2z = r2 ..等)

我想使用矩阵规则来解决这个问题。为此,我必须将系统解析为2个向量。

[[a1,b1,c1],[a2,b2,c2],[a3,b3,bc3]]和[r1,r2,r3]

with open('file.txt', 'r') as fd: s = list(map(lambda x: [int(coef) for coef in x.split('+')] , fd.read().replace(' ','').replace('x','') \
                                             .replace('y','').replace('z','').replace('=','+').replace('-','+').split('\n')))

现在我已经完成了上面的代码,但我解析的是[[a1,b1,c1,r1],[a2,b2,c2,r2],[a3,b3,c3,r3]]

2 个答案:

答案 0 :(得分:1)

一个非常简单的解决方案是:

with open('file.txt', 'r') as f: equations = f.read().splitlines()

abc, r = [], []
for i in equations:
    data = i.split()
    abc.append([int(data[0].replace('x','')),int(data[2].replace('y','')),int(data[4].replace('z',''))])
    r.append(int(data[6]))

注意:当然,解决方案假定如果 a,b或c中的任何一个为0 ,那么等式将采用以下形式: 5x + 3y + 0z = 5

答案 1 :(得分:0)

如果l[[a1,b1,c1,r1],[a2,b2,c2,r2],[a3,b3,c3,r3]],则[a[:3] for a in l][[a1, b1, c1], [a2, b2, c2], [a3, b3, c3]][a[-1] for a in l][r1, r2, r3]