Python:如何打印格式化为网格的2d列表?

use*_*528 3 python 2d list

目前,我已经制作了这段代码

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'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']]] 
Run Code Online (Sandbox Code Playgroud)

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

o----
-----
----- 
Run Code Online (Sandbox Code Playgroud)

但是,我不确定从哪里开始.

Chr*_*ian 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
Run Code Online (Sandbox Code Playgroud)

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

要打印"网格",您可以遍历每一,然后遍历每个元素:

def print_grid(grid):
    for row in grid:
        for e in row:
            print e,
        print
Run Code Online (Sandbox Code Playgroud)

输出:

print_grid(grid_maker(3, 5))

o - - - -
- - - - -
- - - - -
Run Code Online (Sandbox Code Playgroud)


ana*_*ana 5

如果你想"漂亮"打印你自己的每个子列表你的网格,你可以使用pprint:

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

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

[[['o'], ['-'], ['-'], ['-'], ['-']],
 [['-'], ['-'], ['-'], ['-'], ['-']],
 [['-'], ['-'], ['-'], ['-'], ['-']]]
Run Code Online (Sandbox Code Playgroud)

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