将2D列表从上到下垂直存储到字符串中

时间:2014-12-09 13:55:19

标签: python string list itertools

我有一个这样的清单:

[['A','B','C'], 
['D','E','F'], 
['G','H','I']]

而不是将其从左到右存储为​​字符串,如:

s += s[i][j] //s = 'ABCDEFGHI'

如何从上到下(垂直)存储它以获得如下结果而不导入库或模块

s = 'ADGBEHCFI'

3 个答案:

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

Recipe
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'