首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在python中打印3x3数组?

如何在python中打印3x3数组?
EN

Stack Overflow用户
提问于 2016-03-10 06:19:05
回答 6查看 8.9K关注 0票数 15

我需要为一个名为TicTackToe.py的游戏打印一个3x3数组。我知道我们可以以水平或垂直的方式打印列表中的内容,使用

listA=['a','b','c','d','e','f','g','h','i','j']
# VERTICAL PRINTING 
for item in listA:
        print item

输出:

a
b
c

# HORIZONTAL  PRINTING
for item in listA:
        print item,

输出:

a b c d e f g h i j

如何打印两者的混合,例如打印一个3x3框,如

a b c
d e f
g h i
EN

回答 6

Stack Overflow用户

发布于 2016-03-10 06:28:11

您可以使用grouper recipe中的逻辑

listA=['a','b','c','d','e','f','g','h','i','j']

print("\n".join(map(" ".join, zip(*[iter(listA)] * 3))))
a b c
d e f
g h i

如果不想丢失元素,请使用带有空字符串的izip_longest作为填充值:

listA=['a','b','c','d','e','f','g','h','i','j']
from itertools import izip_longest

print("\n".join(map(" ".join, izip_longest(*[iter(listA)] * 3,fillvalue=""))))

它的不同之处在于它保持了j:

a b c
d e f
g h i
j  

你可以把逻辑放在一个函数中,当你想打印的时候调用它,传入任何你想要的值。

from itertools import izip_longest

def print_matrix(m,n, fill):
    print( "\n".join(map(" ".join, izip_longest(*[iter(m)] * n, fillvalue=fill))))

或者不使用itertools,只需分块和连接,您也可以使用一个sep参数作为分隔符:

def print_matrix(m,n, sep):
    print( "\n".join(map("{}".format(sep).join, (m[i:i+n] for i in range(0, len(m), n)))))

您只需要传递列表和每行的大小:

In [13]: print_matrix(listA, 3, " ")
a b c
d e f
g h i
j

In [14]: print_matrix(listA, 3, ",")
a,b,c
d,e,f
g,h,i
j

In [15]: print_matrix(listA, 4, ",")
a,b,c,d
e,f,g,h
i,j

In [16]: print_matrix(listA, 4, ";")
a;b;c;d
e;f;g;h
i;j
票数 11
EN

Stack Overflow用户

发布于 2016-03-10 06:27:06

一种简单的方法是使用模运算符:

listA=['a','b','c','d','e','f','g','h','i','j']

count = 0

for item in listA:
    if not count % 3:
        print
    print item,
    count += 1

正如Peter Wood所指出的,您可以使用枚举运算符来避免使用count变量:

listA=['a','b','c','d','e','f','g','h','i','j']

listB = enumerate(listA)
for item in listB:
    if not item[0] % 3:
        print
    print item[1],
票数 8
EN

Stack Overflow用户

发布于 2016-03-10 06:37:58

这里给出的两个答案的另一种选择是使用可以为您进行格式化的东西,比如numpy。这是一个你一般不想要的外部依赖,但如果你已经在网格/矩阵中存储东西,它可能是一个合乎逻辑的选择:

from numpy import array
str(array(listA).reshape((3,3)))

将其放入数组中,将其重塑为您最喜欢的(兼容的)形状,并使其成为字符串。再直观不过了!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35903828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档