如何将一个列表拆分为另一个列表指定的不同尺寸的卡盘?

2024-06-28 19:48:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数组,我正试图把它分成不同大小的块

在下面的示例中,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])

我想要的输出是[[1,2],[3,4,5],[6]]

如何将阵列拆分为不同大小的卡盘


Tags: 方法in示例forlen尺寸range数组
2条回答

您可以使用^{}根据loopN中的元素获取l的切片:

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

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

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

您需要在loopN列表上循环,而不是在list上循环。然后,您可以获得列表中的相应部分

我在下面将list重命名为l,以避免使用内置关键字

i = 0
chunks = []
loopN = [2,3,1]
l = [1,2,3,4,5,6]

for chunksize in loopN:
    chunks.append(l[i:i+chunksize])
    i += chunksize

相关问题 更多 >