如何在python中打印2d数组

时间:2016-07-23 15:39:05

标签: python arrays multidimensional-array

我在为战舰游戏打印这个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)

我在这里找到了如何初始化数组:How to initialise a 2D array in Python? 这是我发现代码示例迭代2d数组的地方,但它对我不起作用: Iterating over a 2 dimensional python list

你能帮我一下吗?

7 个答案:

答案 0 :(得分:1)

您的字符串格式错误%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

答案 1 :(得分:0)

for i in range(10):
    for j in range(10):
        print(locate[i][j])`

这应该可以使它工作。

答案 2 :(得分:0)

你想怎么打印?请提供有关输出格式的更多信息。

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

在这个for循环中:

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

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

locate[i].append(0)

这里的问题是你的locate变量是一个2D数组,所以你可能想尝试类似的东西:

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

否则,如果我没弄错的话,你必须附上一份完整的清单

另外,你的最后一句话“print(locate)”应该在for-loop之外只打印一次矩阵

答案 3 :(得分:0)

这里是我编写的一些代码来生成乘法板,以演示如何打印未知大小的2d数组

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

答案 4 :(得分:0)

您有多种打印形式

使用numpy

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

使用pprint

import pprint
pprint.pprint(matrix)

答案 5 :(得分:0)

首先,让我们清理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

说明:当您在列表中使用for X时,X将具有列表中每个元素的值。因此,我们的locate_i是给定i索引的每个子列表。当我们遍历此列表时,我们获取内容,"%s,%s"%(i,j)

答案 6 :(得分:0)

这是我用来打印清单的最简单方法。

<template is="dom-repeat" items="[[_wrap(userIds)]]">
  <firebase-document path="/users/[[item.userId]]" data="{{item.user}}"></firebase-document>
  <div>User's name is [[item.user.name]]</div>
</template>