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



我有以下嵌套列表:

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

嵌套循环

使用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']

最简单的方法是使用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]))]

如果它肯定是一个列表。

最新更新