将一个列表分割成均匀大小的块的 Python 程序

2022-05-03 00:00:00 大小 分割 均匀

在这个例子中,你将学习以不同的方式将一个列表分割成大小均匀的块。

例 1:使用 yield

def split(list_a, chunk_size):

  for i in range(0, len(list_a), chunk_size):
    yield list_a[i:i + chunk_size]

chunk_size = 2
my_list = [1,2,3,4,5,6,7,8,9]
print(list(split(my_list, chunk_size)))

输出

[[1, 2], [3, 4], [5, 6], [7, 8], [9]]

在上面的例子中,我们已经定义了一个函数来分割列表。

使用for循环和range()方法,以chunk的大小为步长,从0到列表的长度进行遍历。
list_a[i:i+chunk_size]给出每个块。例如,当i=0时,包含在大块中的项目是i到i+chunk_size,也就是0到(0+2)的索引。在下一次迭代中,包含的项目是2到2+2=4。

你可以用列表压缩做同样的事情,如下所示。

chunk_size = 2
list_chunked = [my_list[i:i + chunk_size] for i in range(0, len(my_list), chunk_size)
print(list_chunked)

输出

[[1, 2], [3, 4], [5, 6], [7, 8], [9]]

例 2: 使用 numpy

import numpy as np

my_list = [1,2,3,4,5,6,7,8,9]
print(np.array_split(my_list, 5))

输出

[array([1, 2]), array([3, 4]), array([5, 6]), array([7, 8]), array([9]) ]

array_split()是一个numpy方法,将一个列表分割成大小相等的块。这里,块的大小是5。

注意:你需要在你的系统上安装numpy。

相关文章