如何将列表拆分为另一个列表指定的不同大小的夹头?

tbo*_*den -1 python list python-3.x

我有一个数组,我试图将其分成不同大小的块。

在下面的示例中,loopN是卡盘尺寸。我已经尝试了各种方法来迭代loopN,但无法弄清楚。list是我试图拆分成块的数组。

loopN = [2,3,1]
list = [1,2,3,4,5,6]

for i in range(0, len(list), loopN):
    chunks.append(list[i:i+loopN])
Run Code Online (Sandbox Code Playgroud)

我正在寻找的输出是[[1,2],[3,4,5],[6]].

如何将阵列拆分为不同大小的夹头?

yat*_*atu 5

您可以根据 中的元素使用itertools.islice切片:lloopN

from itertools import islice

loopN = [2,3,1]
l = iter([1,2,3,4,5,6])

[list(islice(l, i)) for i in loopN]
# [[1, 2], [3, 4, 5], [6]]
Run Code Online (Sandbox Code Playgroud)

如果你想坚持列出方法,按照你的方法,@barmar 已经发现了一些错误的地方。请注意,切片i:i+loopN实际上没有意义。您不能添加整数和列表。

您需要遍历将用于切片的值l,因此遍历loopN. 此外,您不需要范围,只需直接迭代loopN,这也是一个可迭代的,并跟踪您迭代的先前值,在每次迭代时添加它们以向前移动切片。