如何打印格式为网格的二维列表?

2024-04-29 10:12:39 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我已经做了这个代码

def grid_maker(h,w):
    grid = [[["-"] for i in range(w)] for i in range(h)]
    grid[0][0] = ["o"]
    print grid

>>>grid_maker(3,5) => [[['o'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']]] 

我想制作另一个函数,该函数将接收生成的2d数组并以如下格式打印出来:

o----
-----
----- 

然而,我不确定从哪里开始


Tags: 函数代码infordef格式range数组
3条回答

使用字符串连接()

for row in grid:
    print ''.join(*zip(*row))

或作为一个班轮:

print '\n'.join(''.join(*zip(*row)) for row in grid)

但如果您愿意建议您将所有内容更改为:

def grid_maker(h,w):
    grid = [["-" for _ in range(w)] for _ in range(h)]
    grid[0][0] = "o"
    return grid

print '\n'.join(''.join(row) for row in grid_maker(5,5))

如果要使用grid_maker()的结果,必须使用return返回其结果:

def grid_maker(h, w):
    grid = [["-" for i in range(w)] for i in range(h)]
    grid[0][0] = "o"
    return grid

我修改了它,因为我不认为每个元素都必须位于另一个list

要打印“网格”,您可以迭代每个,然后迭代每个元素:

def print_grid(grid):
    for row in grid:
        for e in row:
            print e,
        print

输出:

print_grid(grid_maker(3, 5))

o - - - -
- - - - -
- - - - -

如果您想“漂亮地”打印网格,每个子列表都在自己的行上,您可以使用^{}

>>> grid=[[['o'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']]]

>>> from pprint import pprint
>>> pprint(grid)

[[['o'], ['-'], ['-'], ['-'], ['-']],
 [['-'], ['-'], ['-'], ['-'], ['-']],
 [['-'], ['-'], ['-'], ['-'], ['-']]]

它仍然会像您定义的那样将每个元素显示为一个列表,如果您想将它们显示为字符串,您必须像m.wasowski建议的那样使用连接

相关问题 更多 >