Python 如何将一个列表拆分为另一个列表指定的不同尺寸的卡盘?
我有一个数组,我正试图把它分成不同大小的块 在下面的示例中,Python 如何将一个列表拆分为另一个列表指定的不同尺寸的卡盘?,python,python-3.x,list,Python,Python 3.x,List,我有一个数组,我正试图把它分成不同大小的块 在下面的示例中,loopN是卡盘尺寸。我已经尝试了各种方法来迭代loopN,但是无法理解列表是我试图拆分为块的数组 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]] 如何将阵列拆分为不同大小的卡盘?您可以根据loopN中的元素使用
loopN
是卡盘尺寸。我已经尝试了各种方法来迭代loopN
,但是无法理解<代码>列表是我试图拆分为块的数组
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]]
如何将阵列拆分为不同大小的卡盘?您可以根据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
,这也是一个iterable,并跟踪您迭代过的以前的值,在每次迭代中添加它们以向前移动切片。您需要循环loopN
列表,而不是列表
。然后,您可以获得列表中的相应部分
我已将下面的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
请不要使用诸如
list
之类的关键字作为变量名。您希望i+loopN
做什么i
是一个数字,loopN
是一个列表。