Python 从列表中的列表打印网格值

Python 从列表中的列表打印网格值,python,python-3.x,Python,Python 3.x,在这个练习中,我有一个列表 grid = [['.', '.', '.', '.', '.', '.'], ['.', 'O', 'O', '.', '.', '.'], ['O', 'O', 'O', 'O', '.', '.'], ['O', 'O', 'O', 'O', 'O', '.'], ['.', 'O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O', '.'],

在这个练习中,我有一个列表

grid = [['.', '.', '.', '.', '.', '.'],
       ['.', 'O', 'O', '.', '.', '.'],
       ['O', 'O', 'O', 'O', '.', '.'],
       ['O', 'O', 'O', 'O', 'O', '.'],
       ['.', 'O', 'O', 'O', 'O', 'O'],
       ['O', 'O', 'O', 'O', 'O', '.'],
       ['O', 'O', 'O', 'O', '.', '.'],
       ['.', 'O', 'O', '.', '.', '.'],
       ['.', '.', '.', '.', '.', '.']]
我必须编写一个小程序,在列表中循环并按如下方式打印网格[1][0]、网格[2][0]、网格[3][0]等以显示此图片

..OO.OO..
.OOOOOOO.
.OOOOOOO.
..OOOOO..
...OOO...
....O....
我必须使用循环中的循环来实现这一点,我不知道这是否只是因为我今天早上没有喝足够的咖啡,但我不知道如何实现这一点。我写的代码只是按原样打印出网格,图片就在它的一侧

def printer(grid_list):

line = ""
for i in range(len(grid_list)):
    for char in range(len(grid_list[i])):
         line += grid_list[i][char]
    print(line)
    line = ""
结果:

......
.OO...
OOOO..
OOOOO.
.OOOOO
OOOOO.
OOOO..
.OO...
......

我知道我的问题是我的代码正在循环并打印网格[0][1]、网格[0][2]、网格[0][3]。任何指针都将不胜感激,这是一个非常简单的问题,我觉得寻求帮助很愚蠢。

您必须只向行中添加每个内部数组的第一个字符,然后再添加第二个字符,以此类推

for char in range(len(grid_list[0])):
    line = ""
    for i in range(len(grid_list)):
         line += grid_list[i][char]
    print(line)

此解决方案要求内部的所有数组必须具有相同的长度。

通过这种方式,您可以利用Python的更多优势,在我看来,这也更容易理解,这在清晨可能会有所帮助:

grid_list = [['.', '.', '.', '.', '.', '.'],
             ['.', 'O', 'O', '.', '.', '.'],
             ['O', 'O', 'O', 'O', '.', '.'],
             ['O', 'O', 'O', 'O', 'O', '.'],
             ['.', 'O', 'O', 'O', 'O', 'O'],
             ['O', 'O', 'O', 'O', 'O', '.'],
             ['O', 'O', 'O', 'O', '.', '.'],
             ['.', 'O', 'O', '.', '.', '.'],
             ['.', '.', '.', '.', '.', '.']]

for i in range(len(grid_list[0])):
    print(''.join(row[i] for row in grid_list))
您的
line=”“
应位于第一个for循环的正后方,否则未定义
line