我想以不同的方式格式化我的列表

时间:2015-08-20 00:14:40

标签: python

我的程序中有一个列表:grid = []

网格当前以以下格式保存字符串:

  • qwertyui

  • asdfghjk

  • zxcvbnml

我想更改列表,以便将其格式更改为:

  • ZAQ
  • XSW
  • CDE
  • VFR
  • BGT
  • NHY
  • MJU
  • LKI

所以在某种意义上,列表只是顺时针旋转90度。我还想将新格式化的字符串存储在名为diff_grid []的不同列表中。

2 个答案:

答案 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])