从文本文件添加两个矩阵(Python w/o 模块)

Add Two Matrix From A Text File (Python w/o Modules)

我正在尝试从包含以下内容的文本文件中添加两个矩阵:

[[0,1,2],[9,8,7]] [[6,5,4],[3,4,5]]

我有这个代码:

def addition(filename):
a=[]
b=[]
with open(filename, 'r') as myfile:
    data=myfile.read().split()
    a=data[0].split()
    b=data[1].split()
a=a[0]
b=b[0]
print (a)
sum = []
for i in range(len(a)):
    print (i)
    c = []
    for j in range(len(a[0])):
        c.append(a[i][j]+b[i][j])
    sum.append(c)
return sum

但它输出:

[['[['], ['[['], ['06'], [',,'], ['15'], [',,'], ['24'], [']]'], 
[',,'], ['[['], ['93'], [',,'], ['84'], [',,'], ['75'], [']]'], [']]']]

而不是:

[[6,6,6],[12,12,12]]

知道如何解决这个问题吗?谢谢!

您目前有 ab 作为 strings - 在 没有 点,您将它们转换为 lists

从结果可以看出,每个elementstrings中每个positioncharactersconcatenation,不是sumelements (numbers).


所以,要解决这个问题,我们只需要将 ab 转换为 lists。如果您确定 file 的内容将始终是 只是 lists(并且其他人无法访问,因为他们可能会编写恶意内容),您可以为此使用 eval()

演示其工作原理:

>>> eval("[[0, 1, 2], [9, 8, 7]]")
[[0, 1, 2], [9, 8, 7]]

但是,如果您不能完全相信 file 的内容,您应该使用 ast.literal_eval:

>>> import ast
>>> ast.literal_eval("[[0, 1, 2], [9, 8, 7]]")
[[0, 1, 2], [9, 8, 7]]

希望您能够将此应用到您的 code,但由于我无权访问 file,我无法为您做这件事。