Python列表旋转输出实现求助:新手结果不符问题
解决Python Grid转置输出问题
嘿,我一眼就看出问题啦!你现在是按行打印grid里的内容,但你想要的输出是把grid的列拼接成字符串后逐行打印——这本质上就是矩阵转置的需求。
先看你的grid(根据你给出的片段和输出反推,完整的grid应该是这样):
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', '.', '.', '.'], ['.', '.', '.', '.', '.', '.'] ]
你当前的代码应该是直接遍历每行并拼接打印,类似这样:
for row in grid: print(''.join(row))
这自然会输出每行的内容,也就是你现在得到的结果。
正确的解决方案
要得到目标输出,我们需要把grid转置(行变列,列变行),Python里用zip(*grid)就能轻松实现这个操作。然后对转置后的每一行(原grid的列)拼接成字符串打印:
for col in zip(*grid): print(''.join(col))
原理解释
zip(*grid)是Python里的实用小技巧:*grid会把grid的每一行拆解成独立的参数传给zip函数,zip会依次从每个行里取第1个元素、第2个元素……组成新的元组,这些元组就是转置后的行(对应原grid的列)。之后用''.join(col)把元组里的字符拼接成字符串,打印出来就完全符合你的预期啦!
运行这段代码后,你就能得到想要的输出:
..OO.OO.. .OOOOOOO. .OOOOOOO. ..OOOOO.. ...OOO... ....O....
内容的提问来源于stack exchange,提问作者nikkitikitavi
相关产品推荐
相关产品推荐

