Python: как распечатать список 2d, отформатированный в сетке?

В настоящее время я сделал этот код

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---- ----- ----- 

Однако я не уверен, с чего начать.

3 Solutions collect form web for “Python: как распечатать список 2d, отформатированный в сетке?”

Если вы хотите использовать результат 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 - - - - - - - - - - - - - - 

Если вы хотите «красиво» распечатать свою сетку с каждым подсписком в своей собственной строке, вы можете использовать pprint :

 >>> grid=[[['o'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']]] >>> from pprint import pprint >>> pprint(grid) [[['o'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']]] 

Он все равно покажет каждый элемент в виде списка, как вы его определили, если вы хотите показать их как строки, вам придется использовать объединения, например, м.васовски.

Использовать строку join ()

 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)) 
Python - лучший язык программирования в мире.