使用Python格式打印二维列表

时间:2014-02-27 21:18:53

标签: python

所以我在python中定义了一个二维列表:

column = 3
row = 2
Matrix =  [['' for i in range(column)] for j in range(row)]

然后我开始为它添加值:

Matrix[0][0] += 'A'
Matrix[1][0] += 'AB'
Matrix[2][0] += 'ABC'
Matrix[0][1] += 'X'
Matrix[1][1] += 'XY'
Matrix[2][1] += 'XYZ'

然后我开始打印希望的某种格式:

for i in range(0, row, 1):
    for j in range(0, column, 1):
        print(Matrix[i][j] + '\t')

我在考虑获得像

这样的结果
A   AB   ABC
X   XY   XYZ

但实际上我得到了:

A   
AB  
ABC     
X   
XY  
XYZ 

只是想知道我的代码有什么问题......

4 个答案:

答案 0 :(得分:5)

print函数在结尾处添加换行符。

表示您不想要新行的方法是使用最后添加逗号

Python 3

print(Matrix[i][j],"\t",)

Python 2.7

print Matrix[i][j],"\t",

答案 1 :(得分:4)

您只需要每个i换一个新行,而每个j只需 。通常它们是隐式的,因此您不需要指定换行符:

Python 3:

for i in range(0, row, 1):
    for j in range(0, column, 1):
        print(Matrix[i][j] + '\t', end="")  # <-- end="" means no newline
    print('')  # <-- implicit newline, only in row loop

Python 2:

for i in range(0, row, 1):
    for j in range(0, column, 1):
        print Matrix[i][j] + '\t',  # <-- comma at the end means no newline
    print('')  # <-- implicit newline, only in row loop

答案 2 :(得分:1)

您可以在python3中使用sep参数:

for row in zip(*Matrix):
    print(*row, sep='\t')

您的矩阵中有行作为列,因此您需要先将其压缩以获取行。
然后,您可以打印行中的各个元素,它们之间有 TAB

在python2中,这将是:

导入itertools 对于itertools.izip(* Matrix)中的行:     打印('\ t'.join(行))

答案 3 :(得分:1)

首先,您可能想要检查添加值的方式。而 迭代该行,您将收到“IndexError: list out of range

添加您的值应如下所示:

Matrix[0][0] = 'A'
Matrix[0][1] = 'AB'
Matrix[0][2] = 'ABC'
Matrix[1][0] = 'X'
Matrix[1][1] = 'XY'
Matrix[1][2] = 'XYZ'

之后,您需要做的就是使用每行上的join()方法迭代您的行。

for i in range(row):
  print '\t'.join(Matrix[i])

这将打印出您想要的结果:

A   AB  ABC
X   XY  XYZ