用python打印二维数组

2024-04-22 17:33:36 发布

您现在位置: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

有人能帮我打印这张桌子吗?使用索引。

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]

Tags: 代码inforifrange数组inf桌子
3条回答

list comprehensions^{} joins的组合可以完成以下任务:

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]))

收益率

   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

在Python中,使用for loops和索引通常是可以避免的,并且不被认为是“Pythonic”,因为它的可读性不如Pythonic的同类(见下文)。但是,您可以这样做:

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

更像是Python的表亲:

for row in A:
    for val in row:
        print '{:4}'.format(val),
    print

然而,这使用了30个打印语句,而我最初的答案只使用了一个。

总是有简单的方法。

import numpy as np
print(np.matrix(A))

我使用numpy生成数组,但是list-of-lists数组的工作方式应该类似。

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])

如果只想打印某些索引:

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])

相关问题 更多 >