所以我在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
只是想知道我的代码有什么问题......
答案 0 :(得分:5)
print
函数在结尾处添加换行符。
表示您不想要新行的方法是使用最后添加逗号
Python 3
print(Matrix[i][j],"\t",)
Python 2.7
print Matrix[i][j],"\t",
答案 1 :(得分:4)
您只需要每个i
换一个新行,而每个j
只需 。通常它们是隐式的,因此您不需要指定换行符:
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
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