我有一个这样的清单:
[['A','B','C'],
['D','E','F'],
['G','H','I']]
而不是将其从左到右存储为字符串,如:
s += s[i][j] //s = 'ABCDEFGHI'
如何从上到下(垂直)存储它以获得如下结果而不导入库或模块
s = 'ADGBEHCFI'
答案 0 :(得分:2)
首先使用带有 splat 运算符zip
的{{1}}转置列表,然后使用(*)
展平它。最后加入这个平面迭代器。
itertools.chain.from_iterable
如果您不想使用任何导入模块,请使用此a = [['A','B','C'], ['D','E','F'], ['G','H','I']]
In [16]: from itertools import chain
In [18]: ''.join(chain.from_iterable(zip(*a)))
Out[18]: 'ADGBEHCFI'
功能。
请参阅generator
itertools.from_iterable
答案 1 :(得分:1)
转动i和j,你就完成了......
a = [['A','B','C'], ['D','E','F'], ['G','H','I']]
s = ""
for i in range(3):
for j in range(3):
s += a[j][i]
print(s)
答案 2 :(得分:0)
>>> my_list
[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
>>> zip(*my_list)
[('A', 'D', 'G'), ('B', 'E', 'H'), ('C', 'F', 'I')]
>>> import itertools
>>> "".join(itertools.chain.from_iterable(zip(*my_list)))
'ADGBEHCFI'
如果您不想导入额外的模块:
>>> "".join(map("".join,(zip(*my_list))))
'ADGBEHCFI'