【问题标题】:Matrix input from a text file(python 3)来自文本文件的矩阵输入(python 3)
【发布时间】:2014-05-05 22:59:01
【问题描述】:

我正在尝试找到一种能够从文本文件中输入矩阵的方法;

例如,一个文本文件将包含

1 2 3
4 5 6
7 8 9

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

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

 print('\n'.join([' '.join(map(str, row)) for row in matrix]))

到目前为止,我试过这个

chemin = input('entrez le chemin du fichier')

        path = input('enter file location') 

        f = open ( path , 'r')
        matrix = [ map(int,line.split(','))) for line in f if line.strip() != "" ]

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

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

谢谢

【问题讨论】:

    标签: python-3.x input matrix integer text-files


    【解决方案1】:

    您可以这样使用列表推导:

    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']]
    >>> 
    

    【讨论】:

    • 感谢您的帮助;我尝试了您的列表理解,但是,我创建了一个包含矩阵 1 2 3、4 5 6 和 4 5 6、7 8 9 的文件;它确实有效,但只在矩阵中写入 1 2 3 和 4 5 6,7 8 9 没有显示/保存?
    • 我从您的代码中删除了 [:-1] ,现在它可以按我的意愿工作了; [:-1] 是干什么用的?谢谢
    【解决方案2】:

    正在使用 python2(例如 Python 2.7.10)和 python3(例如 Python 3.6.4)

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多