Python 3.x 来自文本文件的矩阵输入(python 3)

Python 3.x 来自文本文件的矩阵输入(python 3),python-3.x,input,matrix,integer,text-files,Python 3.x,Input,Matrix,Integer,Text Files,我试图找到一种方法,能够从文本文件中输入矩阵 例如,文本文件将包含 1 2 3 4 5 6 7 8 9 它将用这些数字组成一个矩阵,并将其放入矩阵=[[1,2,3],[4,5,6],[7,8,9]] 然后这必须与我打印矩阵的方式兼容: print('\n'.join([' '.join(map(str, row)) for row in matrix])) 到目前为止,我试过这个 化学=输入('entrez le chemin du fichier') 它所做的只是返回一个映射对象,并在我

我试图找到一种方法,能够从文本文件中输入矩阵

例如,文本文件将包含

1 2 3
4 5 6
7 8 9
它将用这些数字组成一个矩阵,并将其放入矩阵=[[1,2,3],[4,5,6],[7,8,9]]

然后这必须与我打印矩阵的方式兼容:

 print('\n'.join([' '.join(map(str, row)) for row in matrix]))
到目前为止,我试过这个

化学=输入('entrez le chemin du fichier')

它所做的只是返回一个映射对象,并在我尝试打印矩阵时返回一个错误

我做错了什么?矩阵应该包含从文本文件读取的矩阵,而不是映射对象,并且我不想使用外部库,如numpy


谢谢

您可以这样使用列表理解:

myfile.txt

1 2 3
4 5 6
7 8 9


>>> matrix = open('myfile.txt').read()
>>> matrix = [item.split() for item in matrix.split('\n')[:-1]]
>>> matrix
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
>>> 
您还可以为此创建一个函数:

>>> def matrix(file):
...     contents = open(file).read()
...     return [item.split() for item in contents.split('\n')[:-1]]
... 
>>> matrix('myfile.txt')
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
>>> 

正在使用python2(例如python2.7.10)和python3(例如python3.6.4)


谢谢你的帮助;我试着理解你的列表,但是,我创建了一个文件,其中包含矩阵1234,456和456,789;它不工作,但只在矩阵中写入1 2 3和4 5 6,7 8 9未显示/保存?我从您的代码中删除了[:-1],现在它可以按照我的意愿工作;[:-1]是干什么的?谢谢
>>> def matrix(file):
...     contents = open(file).read()
...     return [item.split() for item in contents.split('\n')[:-1]]
... 
>>> matrix('myfile.txt')
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
>>> 
rows=3
cols=3
with open('in.txt') as f:
   data = []
   for i in range(0, rows):
      data.append(list(map(int, f.readline().split()[:cols])))
print (data)