You can rotate your list of lists 90° using zip(*reversed(your_list))
like this:
grid = [['.', '.', '.', '.', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['0', '0', '0', '0', '.', '.'],
['0', '0', '0', '0', '0', '.'],
['.', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '.'],
['0', '0', '0', '0', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
print("\n".join(map("".join, zip(*reversed(grid)))))
Out:
..00.00..
.0000000.
.0000000.
..00000..
...000...
....0....
Instead of reversed(grid) you can use grid[::-1] which also reverses the outer list, except it creates a copy of your list, which uses more memory (here I'm also using pprint to show you what exactly your transposed list looks like):
from pprint import pprint
pprint(list(zip(*grid[::-1])))
[('.', '.', '0', '0', '.', '0', '0', '.', '.'),
('.', '0', '0', '0', '0', '0', '0', '0', '.'),
('.', '0', '0', '0', '0', '0', '0', '0', '.'),
('.', '.', '0', '0', '0', '0', '0', '.', '.'),
('.', '.', '.', '0', '0', '0', '.', '.', '.'),
('.', '.', '.', '.', '0', '.', '.', '.', '.')]
Which if you really wanted lists instead of tuples you could convert them back to list:
pprint([list(row) for row in zip(*reversed(grid))])
[['.', '.', '0', '0', '.', '0', '0', '.', '.'],
['.', '0', '0', '0', '0', '0', '0', '0', '.'],
['.', '0', '0', '0', '0', '0', '0', '0', '.'],
['.', '.', '0', '0', '0', '0', '0', '.', '.'],
['.', '.', '.', '0', '0', '0', '.', '.', '.'],
['.', '.', '.', '.', '0', '.', '.', '.', '.']]