用于将列表拆分为大小均匀的块的 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)th 索引。在下一次迭代中,包含的项目是 2 到 2 + 2 = 4

Python 生成器 了解更多关于 yield 的信息。

您可以使用列表推导式完成相同的操作,如下所示。

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。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战