在python中打印二维数组

use*_*833 20 python

我必须在5x5数组中打印这个python代码,数组应如下所示:

0 1 4 (infinity) 3
1 0 2 (infinity) 4
4 2 0  1         5
(inf)(inf) 1 0   3
3 4 5   3        0
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我打印这张桌子吗?使用指数.

for k in range(n):
        for i in range(n):
            for j in range(n):
                if A[i][k]+A[k][j]<A[i][j]:
                    A[i][j]=A[i][k]+A[k][j]
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 46

列表推导str联接的组合可以完成这项工作:

inf = float('inf')
A = [[0,1,4,inf,3],
     [1,0,2,inf,4],
     [4,2,0,1,5],
     [inf,inf,1,0,3],
     [3,4,5,3,0]]

print('\n'.join([''.join(['{:4}'.format(item) for item in row]) 
      for row in A]))
Run Code Online (Sandbox Code Playgroud)

产量

   0   1   4 inf   3
   1   0   2 inf   4
   4   2   0   1   5
 inf inf   1   0   3
   3   4   5   3   0
Run Code Online (Sandbox Code Playgroud)

在Python中使用带索引的for循环通常是可以避免的,并且不被认为是"Pythonic",因为它的可读性低于它的Pythonic表兄弟(见下文).但是,你可以这样做:

for i in range(n):
    for j in range(n):
        print '{:4}'.format(A[i][j]),
    print
Run Code Online (Sandbox Code Playgroud)

Pythonic堂兄会是:

for row in A:
    for val in row:
        print '{:4}'.format(val),
    print
Run Code Online (Sandbox Code Playgroud)

但是,这使用了30个打印语句,而我的原始答案只使用了一个.


Sou*_*nda 34

总有一种简单的方法.

import numpy as np
print(np.matrix(A))
Run Code Online (Sandbox Code Playgroud)

  • 矩阵不是轮子 (12认同)
  • 到目前为止最好的答案,让我们不要重新发明轮子 (6认同)

Dre*_*red 6

for i in A:
    print('\t'.join(map(str, i)))
Run Code Online (Sandbox Code Playgroud)


sih*_*hrc 2

我使用 numpy 生成数组,但列表数组的列表应该类似地工作。

import numpy as np
def printArray(args):
    print "\t".join(args)

n = 10

Array = np.zeros(shape=(n,n)).astype('int')

for row in Array:
    printArray([str(x) for x in row])
Run Code Online (Sandbox Code Playgroud)

如果您只想打印某些索引:

import numpy as np
def printArray(args):
    print "\t".join(args)

n = 10

Array = np.zeros(shape=(n,n)).astype('int')

i_indices = [1,2,3]
j_indices = [2,3,4]

for i in i_indices:printArray([str(Array[i][j]) for j in j_indices])
Run Code Online (Sandbox Code Playgroud)