跳到主要内容

Python 程序:将列表分割成等大小的块

要理解这个示例,你需要了解以下Python编程主题的知识:

示例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()方法,从0开始,以块大小为步长,迭代到列表的长度。
  • 使用yield返回块。list_a[i:i+chunk_size]给出了每个块。例如,当i = 0时,块中包含的项是ii + chunk_size,即0到(0 + 2)索引。在下一次迭代中,包含的项是2到2 + 2 = 4

了解更多关于yield的信息请访问Python生成器

你也可以使用列表推导如下做同样的事情。

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]]

了解更多关于列表推导的信息请访问Python列表推导

示例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。