如何在 Python 中将列表分割成大小相等的块?


列表是 Python 中最常用的数据结构之一。列表是 Python 中一种可变的数据结构,它包含有序的元素序列。以下是一个整数列表的示例:

示例

lis= [5, 10, 15, 20, 25] print(lis)

输出

如果执行以上代码片段,则会产生以下输出。

[5, 10, 15, 20, 25]

让我们讨论一下在 Python 中将列表分割成大小相等的块的各种方法。

使用切片操作符

您可以打印具有相同大小块的元素列表,并且可以使用切片操作符轻松解决。

示例

在下面的示例中,我们将 10 个数字分成了 5 个大小相等的列表。

lis=[1,2,3,4,5,6,7,8,9,10] x=0 y=10 for i in range(x,y,2): x=i print (lis[x:x+2])

输出

执行上述程序后,将获得以下输出。

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

使用 yield 关键字

Yield 是 Python 中的一个关键字,用于从函数中返回,但它不会忘记其局部状态。

简单来说,当我们希望从函数中返回多个结果(部分解)而无需退出函数且不会丢失其局部状态时,可以使用 yield 关键字。

示例 1

以下是一个示例程序,用于演示使用 **yield** 关键字将 Python 中的列表分割成大小相等的块。

lis = [10,20,30,40,50,60,70,80,90,100] def chunks(l, n): for i in range(0, len(l), n): yield l[i:i + n] n = 2 t = list(chunks(lis, n)) print (t)

输出

执行上述程序后,将生成以下输出。

[[10, 20], [30, 40], [50, 60], [70, 80], [90, 100]]

示例 2

我们在下面的示例中定义了一个函数来分割列表。

  • 使用 for 循环和 range() 方法从 0 迭代到列表的长度,使用块的大小作为步长。
  • 列表“l[i:i+size_of_chunk]”返回每个块;yield 返回这些块。
def split(l, size_of_chunk): for i in range(0, len(l), size_of_chunk): yield l[i:i + size_of_chunk] size_of_chunk = 4 the_list = [23,56,83,19,38,64,92,56] print('The evenly sized chunk list is:',list(split(the_list, size_of_chunk)))

输出

执行上述代码后,我们得到以下输出:

The evenly sized chunk list is: [[23, 56, 83, 19], [38, 64, 92, 56]]

使用列表推导式

列表推导式提供更短的语法,并允许从其他可迭代对象(如元组、列表、字符串、数组等)创建新的列表。

示例

以下是一个示例程序,使用列表推导式将 Python 中的列表分割成大小相等的块。

lis = [1, 2, 3, 4, 5, 6, 7, 8, 9] n = 3 x = [lis[i:i + n] for i in range(0, len(lis), n)] print(x)

输出

执行上述程序后,将生成以下输出。

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

使用 numpy 模块

Numpy 是 Python 中用于处理数组的通用包。它提供了一个多维数组对象,具有出色的速度以及用于与这些数组交互的工具。

示例

Numpy 的 array_split() 方法将列表分成大小相等的块。这里有 6 个单独的块。

import numpy as num list = [23,56,83,19,38,64,92,56] print('The evenly sized chunk list is:',num.array_split(list, 6))

输出

以下是上述代码的输出:

The evenly sized chunk list is: [array([23, 56]), array([83, 19]), array([38]), array([64]), array([92]), array([56])]

更新于: 2022年11月8日

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告