Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将一个列表拆分为另一个列表指定的不同尺寸的卡盘?_Python_Python 3.x_List - Fatal编程技术网

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
是一个列表。