我的程序中有一个列表:grid = []
网格当前以以下格式保存字符串:
qwertyui
asdfghjk
我想更改列表,以便将其格式更改为:
所以在某种意义上,列表只是顺时针旋转90度。我还想将新格式化的字符串存储在名为diff_grid []的不同列表中。
答案 0 :(得分:3)
使用zip()
,请记住,它会从每个项目中获取第一个元素,然后是第二个元素,依此类推。
>>> strings = ['qwertyui', 'asdfghjk', 'zxcvbnml']
>>> for item in zip(*(strings[::-1])):
... print(item)
...
('z', 'a', 'q')
('x', 's', 'w')
('c', 'd', 'e')
('v', 'f', 'r')
('b', 'g', 't')
('n', 'h', 'y')
('m', 'j', 'u')
('l', 'k', 'i')
如果您想要('q', 'a', 'z')
而不是('z', 'a', 'q')
,那么您就不需要[::-1]
来反转list
字符串。
如果您不想在输出中看到tuple
结构,可以使用join()
或解压缩tuple
并使用自定义end
参数:
>>> for item in zip(*(strings[::-1])):
... print(*item, sep='')
...
zaq
xsw
cde
vfr
bgt
nhy
mju
lki
答案 1 :(得分:0)
假设grid是您所指的字符串列表:
>>> grid = ["abc", "def", "xyz"]
尝试
>>> diff_grid = [''.join(i) for i in zip(*grid[::-1])]
>>> diff_grid
['xda', 'yeb', 'zfc']
zip(*grid)
会在grid
的字符串上应用zip运算符。
请注意,由于应用了zip操作的顺序,您必须撤消grid
(grid[::-1])
。