你想要的是转置你的列表列表,使行列和列成行:
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(*grid))))
日期:
..00.00.. .0000000. .0000000. ..00000.. ...000... ....0....
或者使用稍微不同的语法print_function
,我们可以用*解包并指定一个sep的分隔符:
from __future__ import print_function print(*map("".join,zip(*grid)),sep="\n")
使用python2如果你不想创建中间列表,你可以使用itertools
它,这将成为:
from __future__ import print_function from itertools import imap, izip print(*imap("".join,izip(*grid)),sep="\n")
为了完整性并向您展示您的转置列表的确切内容:
from pprint import pprint as pp pp(list(zip(*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', '.', '.', '.', '.')]
如果你真的想要列表而不是元组,你可以map
回到列表:
pp(list(map(list,zip(*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', '.', '.', '.', '.']]
索引魔法:
>>> 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', '.', '.', '.'], ['.', '.', '.', '.', '.', '.']] >>> for i in range(len(grid[0])): #assuming they all have the same length print (''.join(x[i] for x in grid)) ..00.00.. .0000000. .0000000. ..00000.. ...000... ....0....
或者保存到新网格:
>>> newgrid = [] >>> for i in range(len(grid[0])): #assuming they all have the same length newgrid.append([x[i] for x in grid]) >>> newgrid [['.', '.', '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', '.', '.', '.', '.']]
或一行:
>>> newgrid = [[x[i] for x in grid] for i in range(len(grid[0]))] >>> newgrid [['.', '.', '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', '.', '.', '.', '.']]