在网格中打印2D数组

时间:2014-11-26 02:01:23

标签: python arrays

我需要将其打印为:

....

....

....

目前我有这个:

def main():
    rows=3
    col=4
    values=[[0,0,0,0],
            [0,0,0,0],
            [0,0,0,0]]
    for i in range(rows):
        for j in range(col):
            values[i][j]='.'
    print(values)
main()

将打印 [['。','。','。','。'],['。','。','。','。'],['。','。','。', '']

有没有办法让它看起来更好?

5 个答案:

答案 0 :(得分:2)

你可以这样试试:

for x in range(3):
    print('.'*4)         # when you multiply a string with n, it produces n string

输出

....
....
....

修改代码:

def main():
    rows=3
    col=4
    values=[[0,0,0,0],
        [0,0,0,0],
        [0,0,0,0]]
    for i in range(rows):
        print("".join('.' for j in range(col)))

main()

输出:

....
....
....

答案 1 :(得分:1)

这适用于具有任何类型值的任何大小的数组:

print('\n'.join(' '.join(str(x) for x in row) for row in values))

更长更清晰:

  lines = []
  for row in values:
    lines.append(' '.join(str(x) for x in row))
  print('\n'.join(lines))

答案 2 :(得分:0)

如果您不需要values对象,并且只是为了让它更容易打印而构建它......请不要这样做,只需使用Hackaholic's solution

但是如果您确实需要values对象,或者您已经拥有它并且想要知道如何打印它,那就这样做:

print('\n'.join(''.join(row) for row in values))

或者,更明确地说:

for row in values:
    line = ''.join(row)
    print(line)

或者,更明确地说:

for row in values:
    for col in row:
        print(col, end='')
    print()

答案 3 :(得分:0)

如果你不需要,或者不想在这个问题上使用数组或for循环,这里有很多方法可以做到。

# Dynamic and easy to customize, and also what I would use if I needed
# to print more than once.
def print_chars(char=".",n_of_chars=4,n_of_lines=4):
    single_line = (char * n_of_chars) + '\n'
    print(single_line * n_of_lines)

print_chars()

....
....
....
....

# or maybe you want 2 rows of 10 dashes?
print_chars('-',10,2)

----------
----------

# 2 rows of 5 smileys?
print_chars(':-) ',5,2)

:-) :-) :-) :-) :-) 
:-) :-) :-) :-) :-)


# If your only going to use it once maybe this
print((('.' * 4) + '\n') * 4)

# or this
print('....\n' * 4)

可能有一种方法可以更快或更pythonic,但嘿。 最后你的需求或编码风格可能会有所不同,我敢打赌,有很多很多的方法可以用python做同样的事情。你只需要记住可读性和速度都是你的朋友,但他们通常不喜欢彼此。(虽然这样的简单事情几乎总是很容易在python中阅读。)

好吧,那是我的2美分。  : - )

答案 4 :(得分:-1)

您正在打印一个变量,这是一个数组,您需要在循环中打印。并且您不需要一个满0的数组。

for i in range (0, 5):
    for j in range (0, 5):
        print ".",
    print "\n"