首页 > 解决方案 > 如何将数组中的数字存储在块中并创建另一个数组或列表?

问题描述

我有两个数组 x 和 y:

x = [2 3 1 1 2 5 7 3 6]
y = [0 0 4 2 4 5 8 4 5 6 7 0 5 3 2 8 1 3 1 0 4 2 4 5 4 4 5 6 7 0]

我想创建一个列表“z”,并希望将组/数字块从 y 存储到 z 中,组的大小由 x 的值定义。

所以 z 将数字存储为

z = [[0,0],[4,2,4],[5],[8],[4,5],[6,7,0,5,3],[2,8,1,3,1,0,4],[2,4,5],[4,4,5,6,7,0]]

我试过这个循环:

h=[]
for j in x:
    h=[[a] for i in range(j) for a in y[i:i+1]]

但它只存储 x 的最后一个值。另外我不确定这个问题的标题是否适合这个问题。如果令人困惑,任何人都可以编辑。非常感谢。

标签: pythonarrayslistloops

解决方案


h每次都在循环中重新分配,所以它最终只得到最后一次迭代的分配。

您应该附加到它,而不是分配它。

start = 0
for j in x:
    h.append(y[start:start+j])
    start += j

推荐阅读