Python 用标记打印矩阵

Python 用标记打印矩阵,python,printing,matrix,Python,Printing,Matrix,我用Python定义了一个矩阵,如下所示: matrix = [['A']*4 for i in range(4)] 如何按以下格式打印: 0 1 2 3 0 A A A A 1 A A A A 2 A A A A 3 A A A A 我想你会发现如何打印出第一行:)类似这样的内容: >>> matrix = [['A'] * 4 for i in range(4)] >>> def solve(mat):

我用Python定义了一个矩阵,如下所示:

matrix = [['A']*4 for i in range(4)]
如何按以下格式打印:

   0  1  2  3
0  A  A  A  A
1  A  A  A  A
2  A  A  A  A
3  A  A  A  A
我想你会发现如何打印出第一行:)

类似这样的内容:

>>> matrix = [['A'] * 4 for i in range(4)]
>>> def solve(mat):
    print " ", " ".join([str(x) for x in xrange(len(mat))])
    for i, x in enumerate(mat):
        print i, " ".join(x)  # or " ".join([str(y) for y in x]) if elements are not string
...         
>>> solve(matrix)
  0 1 2 3
0 A A A A
1 A A A A
2 A A A A
3 A A A A
>>> matrix = [['A'] * 5 for i in range(5)]
>>> solve(matrix)
  0 1 2 3 4
0 A A A A A
1 A A A A A
2 A A A A A
3 A A A A A
4 A A A A A
A A A A
A A A A
A A A A
A A A A

此函数与您的精确输出匹配

>>> def printMatrix(testMatrix):
        print ' ',
        for i in range(len(testMatrix[1])):  # Make it work with non square matrices.
              print i,
        print
        for i, element in enumerate(testMatrix):
              print i, ' '.join(element)
>>> matrix = [['A']*4 for i in range(4)]
>>> printMatrix(matrix)
  0 1 2 3
0 A A A A
1 A A A A
2 A A A A
3 A A A A
>>> matrix = [['A']*6 for i in range(4)]
>>> printMatrix(matrix)
  0 1 2 3 4 5
0 A A A A A A
1 A A A A A A
2 A A A A A A
3 A A A A A A
要检查单长度元素并用
&
替换长度大于1的元素,可以在列表中进行检查,代码将更改如下

>>> def printMatrix2(testMatrix):
    print ' ',
    for i in range(len(testmatrix[1])):
        print i,
    print
    for i, element in enumerate(testMatrix):
        print i, ' '.join([elem if len(elem) == 1 else '&' for elem in element])
>>> matrix = [['A']*6 for i in range(4)]
>>> matrix[1][1] = 'AB'
>>> printMatrix(matrix)
  0 1 2 3 4 5
0 A A A A A A
1 A AB A A A A
2 A A A A A A
3 A A A A A A
>>> printMatrix2(matrix)
  0 1 2 3 4 5
0 A A A A A A
1 A & A A A A
2 A A A A A A
3 A A A A A A
它将这样打印:

>>> matrix = [['A'] * 4 for i in range(4)]
>>> def solve(mat):
    print " ", " ".join([str(x) for x in xrange(len(mat))])
    for i, x in enumerate(mat):
        print i, " ".join(x)  # or " ".join([str(y) for y in x]) if elements are not string
...         
>>> solve(matrix)
  0 1 2 3
0 A A A A
1 A A A A
2 A A A A
3 A A A A
>>> matrix = [['A'] * 5 for i in range(5)]
>>> solve(matrix)
  0 1 2 3 4
0 A A A A A
1 A A A A A
2 A A A A A
3 A A A A A
4 A A A A A
A A A A
A A A A
A A A A
A A A A

作业至少尝试一下,并发布您目前的进度。您的代码生成一个4x4矩阵,而您给出了一个3x3矩阵的示例。@Sukritkalla您当然是对的:)我编辑了原始帖子谢谢,我不知道!你可以推广所有矩阵。另外,看起来OP改变了他想要打印的设计。谢谢!如果我想在写入前检查每个单元格内容,那么第二个for循环将如何更改?假设在某个单元格中,我有多个字母,我想打印一些特殊字符。如果我正确理解了你的问题,你的意思是,例如,你有一个
a
矩阵,其中
AB
位于
(1,1)
位置,并且想打印
&
来代替
AB
,而不是打印
AB
。请参阅编辑后的答案,了解这样的代码。小补丁->在函数签名处将testMatrix更改为testMatrix。