从文本文件添加两个矩阵(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]]
知道如何解决这个问题吗?谢谢!
您目前有 a
和 b
作为 strings
- 在 没有 点,您将它们转换为 lists
。
从结果可以看出,每个element
是strings
中每个position
处characters
的concatenation
,不是sum
仅 elements
(numbers
).
所以,要解决这个问题,我们只需要将 a
和 b
转换为 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
,我无法为您做这件事。
我正在尝试从包含以下内容的文本文件中添加两个矩阵:
[[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]]
知道如何解决这个问题吗?谢谢!
您目前有 a
和 b
作为 strings
- 在 没有 点,您将它们转换为 lists
。
从结果可以看出,每个element
是strings
中每个position
处characters
的concatenation
,不是sum
仅 elements
(numbers
).
所以,要解决这个问题,我们只需要将 a
和 b
转换为 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
,我无法为您做这件事。