如何在python中打印2d数组



我在为我的战舰游戏打印这个2d阵列时遇到问题。

class Battleship:
    def __init__(self):
       self.__init__()
    def board(self, locate):
        locate = []
        for i in range(10):
            locate.append([])
            for j in range(10):
                locate[i].append(0)
        for i in range(10):
            for j in range(10):
                locate[i][j] = '%s,%s'%(i,j)
                print(locate)

我在这里找到了如何初始化数组:如何在Python中初始化2D数组?在这里,我找到了在2d数组上迭代的代码示例,但它对我不起作用:在二维python列表上迭代

你能帮我一下吗?

您的字符串格式错误%s用于字符串,ij是整数,因此使用%d

所以使用:

locate[i][j]='%d%d'%(i,j)

此外,要以矩阵格式打印,完整的代码将是:

for i in range(10):
        s=''
        for j in range(10):
            locate[i][j] = '%d,%d'%(i,j)
            s+=locate[i][j]+' '
        print s
for i in range(10):
    for j in range(10):
        print(locate[i][j])`

这应该会让它发挥作用。

您想如何打印它?请提供更多关于输出格式的信息。

假设您想要格式,即xOy坐标(x,y):

在这个for循环中:

for i in range(10):
        locate.append([])
        for j in range(10):
            locate[i].append(0)

您的代码可能会因为以下行而失败:

locate[i].append(0)

这里的问题是,你的定位变量是一个2D数组,所以你可能想尝试这样的方法:

locate[i][j].append(0)

否则,如果我没有弄错,你将不得不附加一个完整的列表

此外,您的最后一条语句"print(locate)"应该在for循环之外,以便只打印矩阵一次

以下是我为生成乘法板而编写的一些代码,目的是演示如何打印未知大小的二维数组

l = [] # empty list
a,b = 10,10 # size of board aXb
for i in range(1,a+1): # generate board
    temp = []
    for j in range(1,b+1):
        temp.append(i*j)
    l.append(temp)
for i in l: # print the board
    print i

输出是

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
[4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
[6, 12, 18, 24, 30, 36, 42, 48, 54, 60]
[7, 14, 21, 28, 35, 42, 49, 56, 63, 70]
[8, 16, 24, 32, 40, 48, 56, 64, 72, 80]
[9, 18, 27, 36, 45, 54, 63, 72, 81, 90]
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

这里有一种不同的打印的方法

for i in l: # print the board
    for j in i:
        print j,
    print

输出

1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100

首先,让我们清理2D列表的创建:

locate = [[str(i)+","+str(j) for j in range(10)] for i in range(10)]

然后,迭代数组并打印每种情况下存储的值:

for locate_i in locate:
    for locate_i_j in locate_i:
        print locate_i_j

说明:当您在列表中使用a表示X时,X将具有列表中每个元素的值。因此,我们的locate_i是给定i索引的每个子列表。当我们在这个列表上循环时,我们得到内容"%s,%s"%(i,j)

您有多种形式的打印

使用numpy

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

使用pprint

import pprint
pprint.pprint(matrix)

这是我用来很好地打印列表的最简单方法。

for row in board:
    print(' '.join(row))

相关内容

  • 没有找到相关文章

最新更新