将Python列表分成n个块

59

我知道这个问题已经被讨论过很多次,但我的要求是不同的。

我有一个列表,如:range(1, 26)。我想将此列表分成固定数量的n部分。假设n = 6。

>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
>>> l = [ x [i:i + 6] for i in range(0, len(x), 6) ]
>>> l
[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24], [25]]

正如您所看到的,我没有得到6个块(由原始列表元素组成的六个子列表)。我该如何将一个列表分成恰好 n 个块,这些块可以是偶数或奇数呢?


更通用,功能相同: [ np.array(x)[i:i + chunk_size,...] for i in range(0, len(x), chunk_size) ] - Nir
22个回答

0
arr1=[-20, 20, -10, 0, 4, 8, 10, 6, 15, 9, 18, 35, 40, -30, -90, 99]
n=4
final = [arr1[i * n:(i + 1) * n] for i in range((len(arr1) + n - 1) // n )]
print(final)

输出:

[[-20, 20, -10, 0], [4, 8, 10, 6], [15, 9, 18, 35], [40, -30, -90, 99]]


4
这个回答似乎没有尝试回答原来的问题,因为结果复制了提出问题的相同问题,以解决它。 - karel

-1

针对想要在python 3(.6)中不使用导入模块的人们提供答案。
x是需要分割的列表。
n是分块的长度。
L是新的列表。

n = 6
L = [x[i:i + int(n)] for i in range(0, (n - 1) * int(n), int(n))]

#[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24], [25]]

2
我认为这个问题是要分成“n”个块。这个答案将按大小为“n”的块进行划分。 - mrgnw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接