Currently, I have made this code
def grid_maker(h,w):
grid = [[[\"-\"] for i in range(w)] for i in range(h)]
grid[0][0] = [\"o\"]
print grid
>
If you want to "pretty" print your grid with each sublist on its own line, you can use pprint:
>>> grid=[[['o'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']], [['-'], ['-'], ['-'], ['-'], ['-']]]
>>> from pprint import pprint
>>> pprint(grid)
[[['o'], ['-'], ['-'], ['-'], ['-']],
[['-'], ['-'], ['-'], ['-'], ['-']],
[['-'], ['-'], ['-'], ['-'], ['-']]]
It will still show each element as a list, as you defined it, if you want to show them as strings you'll have to use joins like m.wasowski suggests.
Use string join()
for row in grid:
print ''.join(*zip(*row))
or as one-liner:
print '\n'.join(''.join(*zip(*row)) for row in grid)
but if would rather recommend you to change everything into:
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))
If you want to use the result of grid_maker()
, you have to return its result, using return
:
def grid_maker(h, w):
grid = [["-" for i in range(w)] for i in range(h)]
grid[0][0] = "o"
return grid
I modified it, because I don't think that each element must be inside another list
.
To print the "grid", you could iterate through each row and then iterate through each element:
def print_grid(grid):
for row in grid:
for e in row:
print e,
print
Output:
print_grid(grid_maker(3, 5))
o - - - -
- - - - -
- - - - -