Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List - Fatal编程技术网

如何在python中将列表拆分为给定数量的子列表

如何在python中将列表拆分为给定数量的子列表,python,list,Python,List,可能的重复项: 我需要创建一个函数,将一个列表拆分为一个列表列表,每个列表包含相等数量的项(或尽可能相等) e、 g split_list(mylist,2)将返回包含三个元素的两个列表的列表-[[1,2,3][4,5,6] split_list(mylist,3)将返回包含两个元素的三个列表的列表 split_list(mylist,4)将返回两个元素的两个列表和一个元素的两个列表 我不在乎哪个元素出现在哪个列表中,只是列表被尽可能均匀地分割。numpy.split已经做到了: 示例

可能的重复项:

我需要创建一个函数,将一个列表拆分为一个列表列表,每个列表包含相等数量的项(或尽可能相等)

e、 g

split_list(mylist,2)
将返回包含三个元素的两个列表的列表-
[[1,2,3][4,5,6]

split_list(mylist,3)
将返回包含两个元素的三个列表的列表

split_list(mylist,4)
将返回两个元素的两个列表和一个元素的两个列表


我不在乎哪个元素出现在哪个列表中,只是列表被尽可能均匀地分割。

numpy.split已经做到了:

示例:

>>> mylist = np.array([1,2,3,4,5,6])
split_list(mylist,2)将返回包含三个元素的两个列表的列表 -[1,2,3][4,5,6]]

split_list(mylist,3)将返回一个由三个列表和两个列表组成的列表 元素

split_list(mylist,4)将返回包含两个元素的两个列表的列表 和一个元素的两个列表

对于长度的剩余部分(mylist)/n不是0的情况,您可能需要添加异常捕获:

>>> np.split(mylist, 4)
ValueErrorTraceback (most recent call last)
----> 1 np.split(mylist, 4)
...
ValueError: array split does not result in an equal division

我觉得这看起来很熟悉:这个问题和它的同伴“聪明的答案”使用zip和iter()在过去48小时内出现了大约5次。搜索是你的朋友。搜索“python列表块”,你会找到你的答案。。。投票以重复方式结束此问题要求将序列拆分为指定数量的块,而不是指定长度的块。这不是同一件事。真的很糟糕,不能回答问题,也不起作用。我添加了一些例子来让答案更清楚。平心而论,最初的问题不是很清楚,但我认为numpy.split符合OP的要求。至少n=2和n=3的示例返回的输出似乎与问题中相同(除了输出是一个numpy数组而不是列表,但我假设这不是问题)问题询问的是“如何拆分列表”而不是np数组。但是我还是把我的反对票倒过来投了。例如:
def split\u list(alist,通缉零件=1):length=len(alist)return[alist[I*length//wanted\u parts:(I+1)*length//wanted\u parts]用于范围内的I(通缉零件)]
np.array\u split
具有相同的语法,避免了出现
ValueError
>>> np.split(mylist, 2)
[array([1, 2, 3]), array([4, 5, 6])]
>>> np.split(mylist, 3)
[array([1, 2]), array([3, 4]), array([5, 6])]
>>> np.split(mylist, 4)
ValueErrorTraceback (most recent call last)
----> 1 np.split(mylist, 4)
...
ValueError: array split does not result in an equal division