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

时间:2015-03-20 08:45:53

标签: 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', '.'],
       ['O', 'O', 'O', 'O', '.', '.'],
       ['.', 'O', 'O', '.', '.', '.'],
       ['.', '.', '.', '.', '.', '.']]

我必须编写一个小程序,循环遍历列表并打印如下grid [1] [0],grid [2] [0],grid [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]。任何指针都会非常感激,这是一个非常简单的问题,我觉得不得不寻求帮助。

2 个答案:

答案 0 :(得分:1)

你必须只添加每个内部数组的第一个字符,然后第二个等等。

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

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

答案 1 :(得分:0)

你可以通过这种方式更多地利用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))