【发布时间】:2014-03-14 05:38:07
【问题描述】:
我有一个
a=[[1,2,3],[4,5,6],[7,8,9]]
我想打印类似矩阵形式的“a”,但要按列打印:
1 4 7
2 5 8
3 6 9
有什么办法吗?
【问题讨论】:
标签: python
我有一个
a=[[1,2,3],[4,5,6],[7,8,9]]
我想打印类似矩阵形式的“a”,但要按列打印:
1 4 7
2 5 8
3 6 9
有什么办法吗?
【问题讨论】:
标签: python
你可以使用zip转置它:
print zip(*a)
>>> [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
它应该适用于任何形状,而不仅仅是方阵。它给出不可靠结果的唯一情况是a 有一行。
您可以使用join 以您想要的形式打印它:
for el in a:
print " ".join(str(s) for s in el)
或者,正如@ssm 所建议的,单线:
print '\n'.join(' '.join(map(str,x)) for x in zip(*a))
最后,使用 numpy:
print '\n'.join(' '.join(map(str,x)) for x in np.transpose(a))
【讨论】:
'\n'.join( [' '.join(map(str,x)) for x in zip(*a)] )。善用 zip(*)!
如果你只是想打印,你可以执行以下操作,虽然我假设矩阵是矩形的。
a=[[1,2,3],[4,5,6],[7,8,9]]
for i in xrange(len(a[0])):
print " ".join(str(a[j][i]) for j in xrange(len(a)))
【讨论】:
您可以像这样打印row-major 矩阵:
def print_row_maj(m):
for row in m:
print ' '.join(str(x) for x in row)
将此与sashkello's answer 结合起来打印您的转置(不是倒置!)矩阵。
def transpose(m):
return zip(*m)
a=[[1,2,3],[4,5,6],[7,8,9]]
print_row_maj( transpose(a) )
【讨论】:
var arrnew = new Array();
arrnew = [[2, 3, 4], [4, 5, 7], [5, 6, 9]];
for (var i = 0; i < arrnew.length; i++) {
console.log(arrnew[i][0] + " " + arrnew[i][1] + " " + arrnew[i][2]);
}
【讨论】: