如何在迭代时从嵌套列表创建垂直列表

How to create a vertical list from a nested list at iteration

我有以下嵌套列表:

grid = [[a, b, c, d, e],
        [f, g, h, i, j],
        [k, l, m, o, p]]

并且在 for 循环中,我想获取每个子列表的第 n 个元素并将其附加到单个一维列表。所以在第一次迭代时,它看起来像这样:

[a, f, k]

下一次迭代,它看起来像这样:

[b, g, l]

等等。

我想这样做只是因为我想将此列表创建到另一个现有的常量列表。以下是我的尝试,但它所做的是它只创建每个子列表的最后一个元素的垂直列表:

for j in range(0, len(grid)):
        column_list = [item[j] for item in grid] 

下面应该这样做:

list_ = [['a',' b', 'c', 'd', 'e'],
        ['f', 'g','h', 'i', 'j'],
        ['k', 'l', 'm',' o', 'p']]

[list(tup) for tup in zip(*list_)]

这将产生:

[['a', 'f', 'k'],
 [' b', 'g', 'l'],
 ['c', 'h', 'm'],
 ['d', 'i', ' o'],
 ['e', 'j', 'p']]

最简单的方法是使用 numpy:

grid = np.array(grid)
print (grid[:, 0]) # a, f, k
print (grid[:, 1]) # b, g, l

遍历网格:

data = [grid[:, i] for i in range(len(grid[0]))]

您可以添加:

data = [list(grid[:, i]) for i in range(len(grid[0]))]

如果它肯定必须是列表的列表。

嵌套循环

您可以使用 nested loops 轻松完成:

list = [['a', 'b', 'c', 'd', 'e'],
        ['f', 'g', 'h', 'i', 'j'],
        ['k', 'l', 'm', 'o', 'p']]
i=0
j=0
while(j < len(list[0])):
    i=0
    vert =[]
    while ( i < len(list)):
        vert.append(list[i][j])
        i += 1
    j +=1
    print(vert)

输出是:

['a', 'f', 'k']
['b', 'g', 'l']
['c', 'h', 'm']
['d', 'i', 'o']
['e', 'j', 'p']