字符串格式化矩阵

时间:2015-03-23 01:44:37

标签: python string matrix

(为了我们的目的,矩阵是一个列表列表,IE [[1,2,3],[4,5,6],[7,8,9]]。矩阵的一行是一个子列表。)

我想创建一个名为format_matrix(M)的函数,其中M是用户输入的任何矩阵。如何使用字符串格式在新行上显示矩阵的每一行?此外,每行中的每个数字都应该有一个3(数字中的字符数)空格的缓冲区。

我希望每个数字占用3个字节,包括剩下的任何空字节。所以,例如,数字" 5"是1个字节,所以应该有3个字节 - 1个字节=数字前面的2个字节的空格。 IE" __ 5"。另一个例子是53,即2个字节。 " _53&#34 ;.或234." 234"。 (这里的下划线用于表示空格。)

2 个答案:

答案 0 :(得分:0)

def format_matrix(M):
    for row in M:
        row_str = ""
        for n in row:
            row_str += " " * (3 - len(str(n))) + str(n)
        print row_str

>>> m = [[1, 2, 3], [4 ,5 ,6], [7, 8, 9], [10, 11, 12]]
>>> format_str(m)
  1  2  3
  4  5  6
  7  8  9
 10 11 12

答案 1 :(得分:0)

为什么不使用Python的字符串格式?

In [1]: lst
Out[1]: [[1, 2, 3], [4, 555, 6], [71, 8, 9]]

In [2]: for row in lst:
   ....:     print ' '.join(['{:3d}'.format(e) for e in row])
   ....:     
  1   2   3
  4 555   6
 71   8   9